Arraylist中的数组

时间:2017-07-27 12:27:18

标签: arrays arraylist

我需要在其中ArrayListInteger内建立一个Array。如何设置此项并添加项目?

private final ArrayList<Integer>[] test;

test = new ArrayList<Integer>();

这不会奏效。
谢谢!

4 个答案:

答案 0 :(得分:2)

数组是Object,您可以创建任何对象类型的列表 - 这样您就可以创建一个List数组而不做任何特殊的事情:

// Declare it and initialise as an empty list
List<Integer[]> list = new ArrayList<>();

// Add an item -- it's a new array
list.add(new Integer[5]);

// Access an item -- it's an array
Integer[] array = list.get(0);
Integer x = array[0];

但是,我发现在大多数情况下使用Integer数组的原因很少。 int数组也是Object,因此您也可以使用它。

List<int[]> list = new ArrayList<>();
list.add(new int[5]);

使用对象Integer而不是原始int的最常见原因之一是您不能拥有List个原语。但是你可以拥有基元数组,所以如果你对数组的较小表达能力感到满意,那么无论如何都要用基元填充它。

问问自己为什么要一个List数组而不是List List个数组,数组数组或List数组。

您的问题要求“ArrayList中的数组”。

List<Integer[]>是一个数组列表(因为在<>内部是Integer[])。

List<Integer>[]是一个列表数组 - “数组中的ArrayLists” - 因为[]位于List<>声明之后。

您可以像使用new Type[length]

的任何其他数组一样初始化列表数组
 // Declare it
 List<Integer>[] array = new List<Integer>[5]; 

 // Put something into an array element
 array[3] = new ArrayList<Integer>();

 // Access an element -- it's a List
 List<Integer> list = array[3];
 Integer x = list.get(0);

答案 1 :(得分:0)

如果我们想要Arrays List,那么 -

class Test {

  private final List<int[]> myList;

  public Test() {
      myList = new ArrayList<>();
  }

  public void add(int[] myArray) {
     myList.add(myArray);
  }  
}

始终允许您初始化最终变量。编译器确保您只能执行一次。

答案 2 :(得分:0)

看起来你想创建一个2维的整数数组。

我假设你有一个特殊的用例,你需要一个原始数组ob ArrayList-Objects。

无论如何,你可以像任何其他原始数组一样创建这样的东西 像

ArrayList<Integer>[] test = new ArrayList[2];

并按索引访问/设置..

test[0] = new ArrayList<Integer>();

您也可以在init ...

上填充数组
ArrayList<Integer>[] test = new ArrayList[] {
        new ArrayList<Integer>(),
        new ArrayList<Integer>(),
        new ArrayList<Integer>()
};

答案 3 :(得分:0)

你可以这样用来做这个

private ArrayList<Integer>[] test ;

private void test(int n){
    test=new ArrayList[n];
    for(int i=0;i<n;i++){
         test[i]=new ArrayList<Integer>();

         test[i].add(100);
         test[i].add(10);
         test[i].add(10000);
         test[i].add(1);
         ....
    }
}