首页 > 解决方案 > 输入到 ArrayList Java 的整数列表

问题描述

我有需要添加到 ArrayList 中的值,因为它们必须相互连接并且同时需要可移除。我脑海中的这个装置有点类似于海战。我有需要点击的框。当您单击其中一个右侧时,该框变为绿色。当您单击所有已削减的框时,它们会变成金色框。

我的问题是:将以下值添加到 ArrayList 是否有更顺畅和容易的方法?我尝试了一些 forloops,但都没有工作;

ArrayList[][] Boxes = new ArrayList[6][];
  
   Boxes[0][0].add(1110);
   Boxes[0][1].add(1210);
   Boxes[0][2].add(1310);
   Boxes[0][3].add(1410); 
   
   Boxes[1][0].add(2110);
   Boxes[1][1].add(2210);
   Boxes[1][2].add(2310);
   
   Boxes[2][0].add(2121);
   Boxes[2][1].add(2221);
   Boxes[2][2].add(2321);
   
   Boxes[3][0].add(3110);
   Boxes[3][1].add(3210);
   
   Boxes[4][0].add(3120);
   Boxes[4][1].add(3220);
   
   Boxes[5][0].add(3130);
   Boxes[5][1].add(3230);

标签: javaarraylist

解决方案


如果您提供帮助方法来构建列表数组,则初始化可能会被压缩:

// warning about rawtypes
private static ArrayList[] buildArrayOfLists(Integer... arr) {
    return Arrays.stream(arr)
                 .map(i -> new ArrayList<>(Arrays.asList(i)))
                 .toArray(ArrayList[]::new);
}

// usage -- warning about rawtypes
ArrayList[][] boxes = new ArrayList[][] {
      buildArrayOfLists(1110, 1210, 1310, 1410),
      buildArrayOfLists(2110, 2210, 2310),
      buildArrayOfLists(2121, 2221, 2321),
      buildArrayOfLists(3110, 3210),
      buildArrayOfLists(3120, 3220),
      buildArrayOfLists(3130, 3230)
};

Arrays.stream(boxes)
      .map(Arrays::toString)
      .forEach(System.out::println);

输出:

[[1110], [1210], [1310], [1410]]
[[2110], [2210], [2310]]
[[2121], [2221], [2321]]
[[3110], [3210]]
[[3120], [3220]]
[[3130], [3230]]

更新
为了摆脱关于使用原始类型ArrayList[][]和使用通用List而不是特定实现的警告,可以以更类型安全和无警告的方式重构方法及其用法:

private static <T> List<?>[] arrayOfLists(T... arr) {
    return Arrays.stream(arr)
                 .map(i -> new ArrayList<>(Arrays.asList(i)))
                 .toArray(List<?>[]::new);
}

// usage - no warning about rawtypes, explicitly suppress unchecked
@SuppressWarnings("unchecked")
List<Integer>[][] safeBoxes = (List<Integer>[][]) new List<?>[][] {
      arrayOfLists(1110, 1210, 1310, 1410),
      arrayOfLists(2110, 2210, 2310),
      arrayOfLists(2121, 2221, 2321),
      arrayOfLists(3110, 3210),
      arrayOfLists(3120, 3220),
      arrayOfLists(3130, 3230)
};

推荐阅读