我有一个问题要声明一个多元的arraylist。 ......错过了正确的语法或混淆了我的想法...
这个工作正常,直到这里,声明一个带阵列的arraylist:
Integer[] arrArray = new Integer[] {1,2,3,4,5};
ArrayList<Integer> arrList = new ArrayList<Integer>();
arrList.addAll(Arrays.asList(arrArray));
也在一行中宣布和宣布:
Integer[] arrArray = new Integer[] {1,2,3,4,5};
ArrayList<Integer> arrList = new ArrayList<Integer>(){{
addAll(Arrays.asList(arrArray));}};
或按元素:
ArrayList<Integer> arrList = new ArrayList<Integer>(){{
add(1);
add(2);
add(3);
}};
但是现在我想做同样的事情,但是现在有多个维度的arraylists(在这种情况下是字符串):
private String[] arrFUSE={"3", "true", "0", "FUSE"};
private String[] arrPLACE={ "2", "true", "7", "PLACE"};
private ArrayList<ArrayList<String>> arrLIST = new ArrayList<ArrayList<String>>(){{
add( Arrays.asList(arrFUSE) );
add( Arrays.asList(arrPLACE) );
}};
另一次尝试
private ArrayList<ArrayList<String>> arrLIST =
new ArrayList<ArrayList<String>>(){{
add(
new ArrayList<String>(){{ addAll(Arrays.asList(arrFUSE))}};
);
}};
事先感谢。
答案 0 :(得分:2)
自asList
返回ArrayList
类型
asList
结果投射至List
ArrayList<ArrayList<String>> arrLIST = new ArrayList<ArrayList<String>>(){{
add( (ArrayList<String>) Arrays.asList(arrFUSE) );
add( (ArrayList<String>) Arrays.asList(arrPLACE) );
}};
或将声明更改为List
ArrayList<List<String>> arrLIST = new ArrayList<List<String>>(){{
add( Arrays.asList(arrFUSE) );
add( Arrays.asList(arrPLACE) );
}};
由于您正在实施匿名内部类,因此无法找到它在其范围之外的类型。这就是铸造所需要的。
答案 1 :(得分:1)
String[] arrFUSE={"3", "true", "0", "FUSE"};
String[] arrPLACE={ "2", "true", "7", "PLACE"};
List<List<String>> arrLIST = new ArrayList<List<String>>();
arrLIST.add( Arrays.asList(arrFUSE) );
arrLIST.add( Arrays.asList(arrPLACE) );
请勿在您创建{
的新实例的行上使用ArrayList
。如果您这样做,您将在其下面的行上编写自己的ArrayList
实现。相反,您只想使用标准ArrayList
,因此终止该行并开始新的行。
我还将ArrayList<ArrayList<String>>
更改为List<List<String>>
,因为您希望能够在其中添加List
,而不只是ArrayLists
。事实上,Arrays.asList
创建的内容不是ArrayList
,因此不适合。