在Java中向cascade ArrayList添加元素

在Java中向cascade ArrayList添加元素,java,list,arraylist,Java,List,Arraylist,我有以下列表来保存3x3矩阵值: 1 2 3 4 5 6 7 8 9 List<List<Integer>> list = new ArrayList<>(); 123 4 5 6 7 8 9 列表=新的ArrayList(); 我想添加矩阵值,如下所示: list.add(0, new ArrayList<Integer>{1, 2, 3}); list.add(1, new ArrayList<Integer>{4, 5,

我有以下列表来保存3x3矩阵值:

1 2 3 
4 5 6
7 8 9

List<List<Integer>> list = new ArrayList<>(); 
123
4 5 6
7 8 9
列表=新的ArrayList();
我想添加矩阵值,如下所示:

list.add(0, new ArrayList<Integer>{1, 2, 3});
list.add(1, new ArrayList<Integer>{4, 5, 6});
list.add(2, new ArrayList<Integer>{7, 8, 9});
list.add(0,新数组列表{1,2,3});
添加(1,新数组列表{4,5,6});
添加(2,新数组列表{7,8,9});

但是遇到语法错误。那么,使用级联列表分配矩阵值是正确的方法还是正确的方法?

您不能直接指定要添加到
ArrayList
构造函数中的元素。相反,你可以这样做

List<List<Integer>> list = new ArrayList<>();
list.add(0, List.of(1, 2, 3));
list.add(1, List.of(4, 5, 6));
list.add(2, List.of(7, 8, 9));
List List=new ArrayList();
添加(0,第(1,2,3)项的列表);
增加(1,第(4,5,6)项的清单);
增加(2,第(7、8、9)项清单);

List List=new ArrayList();
添加(0,Arrays.asList(1,2,3));
添加(1,Arrays.asList(4,5,6));
添加(2,Arrays.asList(7,8,9));

请注意,
List.of
返回一个不可变的列表。和
Arrays.asList
返回一个列表,该列表可以
set
,但不能
add

创建ArrayList并向其添加项目,例如
新建ArrayList{1,2,3}

如果您不需要ArrayList,我建议使用由
List.of
方法创建的不可变列表:

list.add(0, List.of(1, 2, 3));
list.add(1, List.of(4, 5, 6));
list.add(2, List.of(7, 8, 9));
如果出于某种原因必须使用ArrayList,请执行以下操作:

List<Integer> arrayList0 = new ArrayList<>();
arrayList0.add(1);
arrayList0.add(2);
arrayList0.add(3);

list.add(0, arrayList0);

// repeat for index 1, 2
List arrayList0=new ArrayList();
arrayList0.add(1);
arrayList0.add(2);
arrayList0.add(3);
添加(0,arrayList0);
//对索引1、2重复上述步骤
选项1:

    list.add(new ArrayList<>(Arrays.asList(1, 2, 3)));
    list.add(new ArrayList<>(Arrays.asList(4, 5, 6)));
    list.add(new ArrayList<>(Arrays.asList(7, 8, 9)));
list.add(新的ArrayList(Arrays.asList(1,2,3));
add(新的ArrayList(Arrays.asList(4,5,6));
add(新的ArrayList(Arrays.asList(7,8,9));
备选案文2:

    List<List<Integer>> list = new ArrayList<>();
    List<Integer> subList;
    int n = 1;

    for(int i = 0; i < 3; ++i){
        subList = new ArrayList<>();
        for (int j = 0; j < 3; ++j){
            subList.add(n);
            n++;
        }
        list.add(subList);
    }
List List=new ArrayList();
列表子列表;
int n=1;
对于(int i=0;i<3;++i){
subList=新的ArrayList();
对于(int j=0;j<3;++j){
子列表。添加(n);
n++;
}
列表。添加(子列表);
}

您不能像那样初始化java ArrayList。 您可以通过以下方式执行此操作:

  • 使用
    数组。asList

    新的ArrayList(Arrays.asList(1,2,3))

  • 如果你用番石榴

    Lists.newArrayList(1,2,3)

  • 如果您使用Java8

    Stream.of(1,2,3).collect(collector.toCollection(ArrayList::new))


  • 您有以下选项:

  • Java-9以后的版本:

    List<List<Integer>> list = new ArrayList<>();
    list.add(List.of(1, 2, 3));
    list.add(List.of(4, 5, 6));
    list.add(List.of(7, 8, 9));
    
    List<List<Integer>> list = new ArrayList<>();
    list.add(Arrays.asList(1, 2, 3));
    list.add(Arrays.asList(4, 5, 6));
    list.add(Arrays.asList(7, 8, 9));
    
         List<List<Integer>> list = Stream.of(
                                             List.of(1, 2, 3), 
                                             List.of(4, 5, 6), 
                                             List.of(7, 8, 9))
                                         .collect(Collectors.toList());
    
  • 使用流API:

    List<List<Integer>> list = new ArrayList<>();
    list.add(List.of(1, 2, 3));
    list.add(List.of(4, 5, 6));
    list.add(List.of(7, 8, 9));
    
    List<List<Integer>> list = new ArrayList<>();
    list.add(Arrays.asList(1, 2, 3));
    list.add(Arrays.asList(4, 5, 6));
    list.add(Arrays.asList(7, 8, 9));
    
         List<List<Integer>> list = Stream.of(
                                             List.of(1, 2, 3), 
                                             List.of(4, 5, 6), 
                                             List.of(7, 8, 9))
                                         .collect(Collectors.toList());
    
    List List=Stream.of(
    (1,2,3)项的清单,
    (4,5,6)项的清单,
    第(7、8、9)项清单
    .collect(Collectors.toList());
    

  • 这是另一个解决方案,有点复杂,但它可以工作:

        List<List<Integer>> list = new ArrayList<>();
        ArrayList<Integer>row1 = new ArrayList();
        ArrayList<Integer>row2 = new ArrayList();
        ArrayList<Integer>row3 = new ArrayList();
        row1.addAll(List.of(1, 2, 3));
        row2.addAll(List.of(4, 5, 6));
        row3.addAll(List.of(7, 8, 9));
        
        list.add(0,row1);
        list.add(1,row2);
        list.add(2,row3);
    
        System.out.println(list);
    
    List List=new ArrayList();
    ArrayListrow1=新的ArrayList();
    ArrayListrow2=新的ArrayList();
    ArrayListrow3=新的ArrayList();
    第1行。addAll(第(1、2、3)项的列表);
    第2行。addAll(第4、5、6行的列表);
    第3行。addAll(第7、8、9行的列表);
    列表。添加(0,第1行);
    列表。添加(1,第2行);
    列表。添加(2,第3行);
    系统输出打印项次(列表);
    
    删除“0”、“1”、“2”,它就会工作。或者你想改用字典?或者它不是Java中的字典,或者其他什么?多维数组更合适吗?@BitLauncher我在问这个问题之前试过,但没有成功。你的意思是
    list.add(newarraylist{1,2,3})?我以前也是这样。有什么想法吗?@Sid你说得对,但这是一个问题,我必须使用List:(有什么想法吗?@Eklavya你为什么删除你的帖子?最好提一下
    List.of
    可以从Java 9Welcome:)很高兴这是一个有用的好答案。在最后一个例子中,您可能需要执行
    映射(ArrayList::new)
    ,因为
    List.of
    是不可变的。OP可能想要操纵这些值。