使用值

时间:2015-10-22 16:17:28

标签: java arrays arraylist

我是编码的新手。我的老师最近介绍了数组和arraylists。我有一个像这样的多维数组:

private String[][] pods = {{"pod1", ""}, {"pod2", ""}, {"pod3", ""}, {"pod4", ""}};

我想将其切换为arraylist,因为我需要在那里编辑信息。

我如何做到这一点,但是使用多维ArrayList?我想用上述信息对其进行初始化。

我试过这个:

private ArrayList<ArrayList<String>> pods = new ArrayList();

每当我把东西放在括号之间时,我都会得到一个无效的操作符错误。

顺便说一下,万一有人想知道 - 这不是课堂作业。这是我自己尝试的事情。

感谢。

4 个答案:

答案 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]));
}
  

但是使用第二种方法会阻止您在任何索引处扩展每个列表项