簡體   English   中英

返回arraylist的Java返回方法?

[英]Java Returning method which returns arraylist?

我有一個類有這樣的方法:

public ArrayList<Integer> myNumbers()    {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(11);
    numbers.add(3);
    return(numbers);
}

我如何在另一個類中調用此方法?

1.如果要調用該方法的類在同一個包中,則創建該類的實例並調用該方法。

2.使用Composition

3.最好有一個像ArrayList<Integer>之類的Generic ArrayList ...

例如:

public class Test{

public ArrayList<Integer> myNumbers()    {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(11);
    numbers.add(3);
    return(numbers);
 }
}


public class T{


public static void main(String[] args){

   Test t = new Test();
   ArrayList<Integer> arr = t.myNumbers();        // You can catch the returned integer arraylist into an arraylist.
 }


}

假設你有這樣的事情:

public class MyFirstClass {
   ...
   public ArrayList<Integer> myNumbers()    {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(11);
    numbers.add(3);
    return(numbers);
   }
   ...
}

您可以像這樣調用該方法:

public class MySecondClass {
    ...
    MyFirstClass m1 = new MyFirstClass();
    List<Integer> myList = m1.myNumbers();
    ...
}

由於您嘗試調用的方法不是static ,因此您必須創建提供此方法的類的實例。 創建實例后,您將可以訪問該方法。

請注意,在上面的代碼示例中,我使用了這一行: List<Integer> myList = m1.myNumbers(); . 這可以通過以下方式更改: ArrayList<Integer> myList = m1.myNumbers(); . 但是,通常建議對接口進行編程,而不是對具體實現進行編程,因此我對您使用的方法的建議是執行以下操作:

public List<Integer> myNumbers()    {
    List<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(11);
    numbers.add(3);
    return(numbers);
   }

這將允許您將該列表的內容分配給實現List接口的任何對象。

您需要實例化它包含的類,或使方法靜態。

因此,如果它包含在 Foo 類中:

Foo x = new Foo();
List<Integer> stuff = x.myNumbers();

或者簡寫:

List<Integer> stuff = new Foo().myNumbers();

或者如果你讓它像這樣靜態:

public static List<Integer> myNumbers()    {
    List<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(11);
    numbers.add(3);
    return(numbers);
}

你可以這樣稱呼它:

List<Integer> stuff = Foo.myNumbers();
List<Integer> numbers = new TheClassName().myNumbers();

如果 Foo 是包含此方法的類

class Foo{
  public ArrayList<Integer> myNumbers()    {
     //code code code
  }
}

然后

new Foo().myNumbers();
MyClass obj = new MyClass();
ArrayList<Integer> numbers = obj.myNumbers();

您可以在其他課程上使用

public ArrayList<Integer> myNumbers = new Foo().myNumbers();

或者

Foo myClass = new Foo();
 public ArrayList<Integer> myNumbers = myclass.myNumbers();

可以調用您的方法,並且可以像這樣存儲arraylist

YourClassName class = new YourClassName();
Arraylist<Integer> numbers = class.numbers(); 

這也允許在此類中進一步操作數組列表

您還可以創建 prime_f 之類的方法,然后調用 ArrayList 如下:

   public static ArrayList<Integer> prime_f(int number) {
   ArrayList<Integer> counter = new ArrayList<Integer>();
   for (int i = 2;i < number;i++) {
       while(number%i == 0) {
           counter.add(i);
           number = number/i;
       }
   }
   if (number > 2) {
       counter.add(number);
   }
   return counter;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM