问题描述
我有一个二维数组,我想将其转换为Arraylist。 我应该如何组织这样的清单?
例如当我有数组
String[][] things={{"dog", "cat", "wolf"},
{"carrot", "apple", "banana"}};
我想要清单
List<what is proper type?> Galg = ...
这将使我能够将行索引为x
并从索引为y
行中获取项目?
1楼
目前,您可以
Galg.add(things);
但是,也许您需要一个ArrayList<String[]>
代替?
在这种情况下,您可以使用Arrays.asList
:
ArrayList<String[]> Galg = new ArrayList<String[]>();
Galg.addAll(Arrays.asList(things));
2楼
看起来您正在寻找ArrayList<ArrayList<String>>
或更好地允许在接口而不是实际类型上进行编程,并使我们的引用更通用(这也意味着灵活,因为它可以处理许多列表,而不仅是ArrayList
)
List<List<String>> list = new ArrayList<List<String>>();
或者由于Java 7,我们可以使用菱形运算符将其缩短,然后推断出通用类型
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
列表也可以。 您可以像嵌套数组一样嵌套它们。
ListA{
[0] -> ListB{
[0] -> "dog",
[1] -> "cat",
[2] -> "wolf"
}
[1] -> ListC{
[0] -> "carrot",
[1] -> "apple",
[2] -> "banana"
}
}
这样我们就可以得到List <of List >> of String <>> >>写为List<List<String>