在Java中的方法中返回两个数组

Joh*_*dep 17 java arrays linked-list object

考虑到我有两个数组,例如:

String[] array1 = new String[10];
int[] array2= new int[10];
Run Code Online (Sandbox Code Playgroud)

所以在一个方法里面我已经计算了两个数组,即array1&array2
现在我想要返回这两个数组.我该怎么办呢?

我在这里读到我可以创建另一个类并定义某些对象类型并将这些数组封装在该类构造函数中,但我仍然感到困惑并且完全不理解.

如果你能告诉我一个可以做到这一点的工作实例,或者可能有任何类似的想法,那就太好了.

anu*_*ava 42

你实际上也可以返回这样的东西:

return new Object[]{array1, array2};
Run Code Online (Sandbox Code Playgroud)

让我们说外面你称之为返回对象的方法obj.然后访问array1 as obj[0]并访问array2 obj[1](需要正确的转换).

  • @Johnydep对象[]类型 (3认同)

小智 7

定义一个对您尝试返回的内容有意义的对象.举个例子:

public class Inventory {     
      private int[] itemNumbers; //array2
      private String[] itemNames; //array1

      public Inventory(int[] itemNumbers, String[] itemNames)
      {
         this.itemNumbers = itemNumbers;
         this.itemNames = itemNames;
      }

      //Setters + getters. Etc.
}
Run Code Online (Sandbox Code Playgroud)

然后在其他地方:

return new Inventory(array2, array1); 
Run Code Online (Sandbox Code Playgroud)

===============================================

笔记:

上面的例子不是库存的一个很好的例子.创建描述项目(项目ID,项目名称等)的项目类,并存储这些项目的数组.

如果你的两个数组是不相关的,那么上面的更多是一个廉价的解决方法.理想情况下,您应该将计算和数组的返回拆分为自己的方法.

如果int/String数组表示键/值对,则use可以使用Map DST实现(http://download.oracle.com/javase/6/docs/api/java/util/Map.html)并返回那.您可以根据需要迭代键/值.


Eng*_*uad 6

您可以按如下方式定义Pair类:

public class Pair
{
    private String[] array1;
    private int[] array2;
    public Pair(String[] array1, int[] array2)
    {
        this.array1 = array1;
        this.array2 = array2;

    }
    public String[] getArray1() { return array1; }
    public int[] getArray2() { return array2; }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以在你的方法中使用它:

public Pair someMethod()
{
     String[] array1 = new String[10];
     int[] array2 = new int[10];

     // blah blah blah

     return new Pair(array1, array2);
}
Run Code Online (Sandbox Code Playgroud)

你可以按如下方式使用你的方法:

Pair pair = someMethod();
String[] arrayA = pair.getArray1();
int[] arrayB = pair.getArray2();
Run Code Online (Sandbox Code Playgroud)