我有一个二维数组,我想把它转换成一个Arraylist。我该如何组织这样的清单?
例如,当我有数组
时String[][] things={{"dog", "cat", "wolf"},
{"carrot", "apple", "banana"}};
我想要列表
List<what is proper type?> Galg = ...
这将允许我将行编入索引为x
并从索引y
的该行获取项目?
答案 0 :(得分:1)
目前,你可以做到
Galg.add(things);
但是,您可能需要ArrayList<String[]>
代替?在这种情况下,您可以使用Arrays.asList
:
ArrayList<String[]> Galg = new ArrayList<String[]>();
Galg.addAll(Arrays.asList(things));
答案 1 :(得分:1)
看起来你正在寻找i
或更好的让接口上的程序而不是实际类型,并使我们的参考更通用(这也意味着灵活,因为它可以处理许多列表,而不仅仅是ArrayList<ArrayList<String>>
)
ArrayList
或者从Java 7开始我们可以使用菱形运算符缩短它,并推断泛型类型
List<List<String>> list = new ArrayList<List<String>>();
您可以通过
等代码创建它List<List<String>> list = new ArrayList<>();
并像
一样使用它String[][] things={{"dog", "cat", "wolf"},{ "carrot", "apple", "banana"}};
List<List<String>> list = new ArrayList<>();
for (String[] row : things){
list.add(new ArrayList<>(Arrays.asList(row)));
}
尝试将列表视为一维数组。实际上所有数组都是一维的,因为二维数组只是一维数组,其中元素是其他一维数组(你正在嵌套一维数组)。
所以你的数组
System.out.println(list.get(1).get(2));//get row indexed as 1,
//and from it item indexed as 2
所以我们有一维数组A{
[0] -> B{
[0] -> "dog",
[1] -> "cat",
[2] -> "wolf"
}
[1] -> C{
[0] -> "carrot",
[1] -> "apple",
[2] -> "banana"
}
}
,其中包含其他一维数组A
和B
。
列表可能相同。您可以像嵌套数组一样嵌套它们。
C
所以我们可以拥有List&lt;列表&lt; of String&gt;&gt;写作ListA{
[0] -> ListB{
[0] -> "dog",
[1] -> "cat",
[2] -> "wolf"
}
[1] -> ListC{
[0] -> "carrot",
[1] -> "apple",
[2] -> "banana"
}
}