Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用值初始化多维ArrayList_Java_Arrays_Arraylist - Fatal编程技术网

Java 使用值初始化多维ArrayList

Java 使用值初始化多维ArrayList,java,arrays,arraylist,Java,Arrays,Arraylist,我不熟悉编码。我的老师最近介绍了数组和数组列表。我有一个多维数组,如下所示: private String[][] pods = {{"pod1", ""}, {"pod2", ""}, {"pod3", ""}, {"pod4", ""}}; 我想将其切换到arraylist,因为我需要编辑其中的信息 如果使用多维数组列表,我将如何执行此操作?我想用上述信息对其进行初始化。 我试过这个: private ArrayList<ArrayList<String>> pod

我不熟悉编码。我的老师最近介绍了数组和数组列表。我有一个多维数组,如下所示:

private String[][] pods = {{"pod1", ""}, {"pod2", ""}, {"pod3", ""}, {"pod4", ""}};
我想将其切换到arraylist,因为我需要编辑其中的信息

如果使用多维数组列表,我将如何执行此操作?我想用上述信息对其进行初始化。

我试过这个:

private ArrayList<ArrayList<String>> pods = new ArrayList();
private ArrayList pods=new ArrayList();
每当我把东西放在括号之间,就会得到一个无效的运算符错误

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


谢谢。

您可以先创建内部ArrayList,然后使用
pods,尝试将项目添加到
pods
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);
//创建初始ArrayList
private ArrayList pods=new ArrayList();
//创建要添加到其中的ArrayList
private ArrayList list1=新的ArrayList();
清单1.添加(“foo”);
//创造另一个
private ArrayList list2=新的ArrayList();
清单2.添加(“酒吧”);
//将内部ArrayList添加到主ArrayList
添加(列表1);
添加(列表2);

首先,你的方法有一半是正确的

对于二维数组,可以使用
ArrayList
ArrayList
s

然而

您正在将
列表初始化为原始类型。在Java 7中,您只需将赋值更改为菱形类型即可进行推理:

List<List<String>> pods = new ArrayList<>();
输出

[[pod1, ], [pod2, ], [pod3, ], [pod4, ]]
[[pod1, ], [pod2, ], [pod3, ], [pod4, ]]
现在,一些Java 8魔咒:

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);

您只需要在数组上迭代并将项添加到列表中。 完成一行后,只需将列表添加到主列表中

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);

}
List List=new ArrayList();
for(int i=0;i
或者,您可以执行以下操作:

for ( int i = 0 ; i < rowsCount ; i++ )
{
   list.add (Arrays.asList(arr[i]));
}
for(int i=0;i
但使用第二种方法将阻止您在任何索引处扩展每个列表项


如果您在使用数组时绝对想要一个类似的单行程序,那么您可以使用这个“单行程序”(您还需要
导入静态java.util.arrays.asList;
):

List pods=newarraylist(asList(
新的ArrayList(asList(“pod1”和“),
新的ArrayList(asList(“pod2”和“),
新的ArrayList(asList(“pod3”和“),
新的ArrayList(asList(“pod4”和“))
));

我认为您不需要所有新的ArrayList位——您只需要使用asList()位即可。此外,在大多数情况下,您不应该在代码中引用ArrayList。不幸的是,
asList
返回一个固定大小的
ArrayList
。如果需要在初始化后追加元素,则需要使用复制构造函数来创建“适当”的可调整大小的列表。是的,否则它会简化很多事情。而且OP实际上提到了编辑列表中数据的需要,所以仅仅公平的代码就被认为是低质量的答案。您应该指出为什么这回答了OP的问题
Arrays.asList
返回一个固定大小的
List
。我相信您无法使用此解决方案将元素附加到内部
列表中。@ManosNikolaidis这是正确的,尽管不是原始问题的要求。我想最简单的解决方案是将调用封装在构造函数中。
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]));
}
List<List<String>> pods = new ArrayList<>(asList(
    new ArrayList<>(asList("pod1", "")),
    new ArrayList<>(asList("pod2", "")),
    new ArrayList<>(asList("pod3", "")),
    new ArrayList<>(asList("pod4", ""))
));