我需要在其中ArrayList
新Integer
内建立一个Array
。如何设置此项并添加项目?
private final ArrayList<Integer>[] test;
test = new ArrayList<Integer>();
这不会奏效。
谢谢!
答案 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)
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);
....
}
}