正如标题所述,我希望将LinkedList转换为String [] [],我不知道如何。
LinkedList<String[]> list;
String[][] arrayStrings;
//What i tried, but doesn't work
arrayStrings = list.toArray(new String[list.size()][list.size()]);
答案 0 :(得分:4)
您不提供所包含数组的大小。您要么根本不提供任何论点:
arrayStrings = list.toArray();
...或者您为数组提供了足够的空间:
arrayStrings = list.toArray(new String[list.size()][]);
外部数组中的数组将是列表中的相同数组。
示例(live copy):
LinkedList<String[]> list = new LinkedList<String[]>();
list.add(new String[] { "a", "b" });
list.add(new String[] { "c", "d" });
list.add(new String[] { "e", "f" });
String[][] arrayStrings;
arrayStrings = list.toArray(new String[list.size()][]);
for (var entry : arrayStrings) {
System.out.println(Arrays.toString(entry));
}
System.out.println(arrayStrings[0] == list.get(0)); // true
输出:
[a, b] [c, d] [e, f] true
答案 1 :(得分:1)
您可以从Stream<String[]>
中获取LinkedList<String[]>
,然后使用toArray(IntFunction<A[]> generator)
将其转换为二维String数组:
List<String[]> list = new LinkedList<>();
list.add(new String[]{"foo", "bar"});
list.add(new String[]{"foo", "baz"});
String[][] arr = list.stream().toArray(String[][]::new);
System.out.println(Arrays.deepToString(arr));
输出:
[[foo, bar], [foo, baz]]
generator
是一个函数,可产生所需类型和所提供长度的新数组。
上面的构造函数引用可以显式表示为lambda:
String[][] arr = list.stream().toArray(len -> new String[len][]);
len
是结果数组的长度。