我是编码的新手。我的老师最近介绍了数组和arraylists。我有一个像这样的多维数组:
private String[][] pods = {{"pod1", ""}, {"pod2", ""}, {"pod3", ""}, {"pod4", ""}};
我想将其切换为arraylist,因为我需要在那里编辑信息。
我如何做到这一点,但是使用多维ArrayList?我想用上述信息对其进行初始化。
我试过这个:
private ArrayList<ArrayList<String>> pods = new ArrayList();
每当我把东西放在括号之间时,我都会得到一个无效的操作符错误。
顺便说一下,万一有人想知道 - 这不是课堂作业。这是我自己尝试的事情。
感谢。
答案 0 :(得分:2)
首先,您的方法是半正确的。
对于二维数组,您可以ArrayList
ArrayList
个。
...然而
您正在将List
初始化为原始类型。从Java 7开始,您只需将分配更改为菱形类型即可进行推理:
List<List<String>> pods = new ArrayList<>();
在早期版本中:
List<List<String>> pods = new ArrayList<List<String>>();
您还需要填充列表。
为此,您需要进行一些迭代。
这是一个完整的Java 7示例(使用List
作为&#34;接口的代码&#34;指南建议)。
String[][] info = {{"pod1", ""}, {"pod2", ""}, {"pod3", ""}, {"pod4", ""}};
List<List<String>> pods = new ArrayList<>();
for (String[] level1: info) {
List<String> list = Arrays.asList(level1);
// use this instead if you intend to modify the inner lists
// List<String> list = new ArrayList<>(Arrays.asList(level1));
pods.add(list);
}
System.out.println(pods);
<强>输出强>
[[pod1, ], [pod2, ], [pod3, ], [pod4, ]]
现在,有些Java 8 mojo:
String[][] info = {{"pod1", ""}, {"pod2", ""}, {"pod3", ""}, {"pod4", ""}};
List<List<String>> pods =
Arrays.stream(info)
.map((a) -> Arrays.asList(a))
// use this instead if you intend to modify the inner lists
// .map((a) -> Arrays.stream(a).collect(Collectors.toList()))
.collect(Collectors.toList());
System.out.println(pods);
(相同)输出
[[pod1, ], [pod2, ], [pod3, ], [pod4, ]]
答案 1 :(得分:1)
如果您绝对需要像使用阵列那样的单线眼镜,您可以使用这个&#34;一个衬垫&#34; (您还需要import static java.util.Arrays.asList;
):
List<List<String>> pods = new ArrayList<>(asList(
new ArrayList<>(asList("pod1", "")),
new ArrayList<>(asList("pod2", "")),
new ArrayList<>(asList("pod3", "")),
new ArrayList<>(asList("pod4", ""))
));
答案 2 :(得分:0)
您可以先创建内部ArrayLists然后使用pods
尝试将项添加到pods.add
ArrayList:
// create your initial ArrayList
private ArrayList<ArrayList<String>> pods = new ArrayList<ArrayList<String>>();
// create an ArrayList<String> to add to it
private ArrayList<String> list1 = new ArrayList<String>();
list1.add("foo");
// create another
private ArrayList<String> list2 = new ArrayList<String>();
list2.add("bar");
// add the inner ArrayLists to your main ArrayList
pods.add(list1);
pods.add(list2);
答案 3 :(得分:0)
您只需要迭代数组并将项添加到列表中。 完成一行后,只需将列表添加到主列表中。
List<List<String>> list = new ArrayList<List<String>>();
for ( int i = 0 ; i < rowsCount ; i++ )
{
List<String> temp = new ArrayList<String>();
for ( int j = 0 ; j < colsCount ; j++ )
temp.add ( arr[i][j]);
list.add (temp);
}
或者您可以执行以下操作:
for ( int i = 0 ; i < rowsCount ; i++ )
{
list.add (Arrays.asList(arr[i]));
}
但是使用第二种方法会阻止您在任何索引处扩展每个列表项