java - 输入到 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);
解决方案
如果您提供帮助方法来构建列表数组,则初始化可能会被压缩:
// 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)
};
推荐阅读
- c++ - 使用较新版本的 g++ 会导致多线程性能下降?
- jhipster - 如何将 Camunda 工作流引擎与 jhipster 生成的应用程序集成?
- angular - 使用 angular-mat-tab 从选项卡 1 上的按钮切换到选项卡 2
- python - 打开工作区会导致 python.pythonPath 被忽略
- android - 在android中实现某种形状
- javascript - 在反应中遍历对象但由于返回语句问题而退出
- java - Kubernetes 中的 UnknownHostException
- c# - 数据库集
'不包含“更新”的定义,也没有可访问的扩展方法“更新” - spring-mvc - Thymeleaf:从 url 中的 get 表单操作中传递一个参数
- css - CSS - 元素自定义半径?