有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

ArrayList Java的ints输入列表

我有一些值需要添加到ArrayList中,因为它们必须相互连接,同时需要可移除。我脑子里的这个装置有点像海战。我有需要点击的框。当你右击其中一个按钮时,框变为绿色。当你点击所有删减的方框时,它们会变成金色的方框

我的问题是:是否有一个更平滑、更容易操作的wat将下面的值添加到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);

共 (1) 个答案

  1. # 1 楼答案

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

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