java - 2D ArrayList 用法
问题描述
我正在做一个使用包含以下内容的 2D ArrayList 的编码问题:
[["HTML","C#"],
["C#","Python"],
["Python", "HTML"]]
我不想深入探讨问题是什么,但本质上我想获取该 2D ArrayList 中的元素并将它们作为单独的元素插入到 1D ArrayList 中。例如,如果我抓住:
["HTML","C#"]
在一维 ArrayList 中,“HTML”是索引 0 处的元素,“C#”是索引 1 处的元素。我尝试通过执行以下操作来做到这一点:
ArrayList<ArrayList<String>> twoD = new ArrayList<>();//2D ArrayList containing the elements above
ArrayList<String> oneD = new ArrayList<String>();
oneD.add(twoD.get(0));
那没有用,但是这样做了:
ArrayList<String> oneD = twoD.get(0);
所以我很困惑为什么第一种方法不起作用,而第二种方法却起作用了。
解决方案
你可以用它java.util.stream
来实现你想要的
public static void main(String[] args) {
// If using 2D array
String[][] languages = {{"HTML","CSS"},{"JAVA","C++"},{"Python","ruby"}};
List<String> languageList = new ArrayList<>();
for(String[] s:languages) {
for (String lang: s) {
languageList.add(lang);
}
}
System.out.println("\n==Print Values in 2D array==");
languageList.stream().forEach(s-> System.out.println(s));
//if using 2D arrayList
List<List<String>> languagesArr = new ArrayList<>();
for(String[] s:languages) {
List<String> temp = new ArrayList<>();
for (String lang: s) {
temp.add(lang);
}
languagesArr.add(temp);
}
System.out.println("\n==Print Values 2D ArrayList==");
languagesArr.stream().forEach(s-> s.stream().forEach(ss-> System.out.println(ss)));
}
正如您在第一个二维数组中看到的那样,我们正在使用流数组列表流流languages
将其添加到一维数组中以打印值。arraylist
for each and then print values using
. for the next 2D
we can literally use
inside another
最终的输出将是这样的。
==Print Values in 2D array==
HTML
CSS
JAVA
C++
Python
ruby
==Print Values 2D ArrayList==
HTML
CSS
JAVA
C++
Python
ruby
推荐阅读
- php - PHP / JSON - 返回大字符串导致错误
- php - 在PHP中用下划线替换文本中的非法字符
- python - 我安装 matplotlib
- windows - 自动在共享上创建文件夹并分配正确的权限
- c# - 如何使用 dotnet 在 linux 上生成资源文件
- android - 属性初始化后 Kotlin 中出现错误的 UninitializedPropertyAccessException
- ssl - 在 httpClient 中使用 POST 时如何确保数据被加密
- ionic3 - 当我有互联网连接时,如何将设备存储上的数据与服务器上的数据同步
- javascript - 使用 Bootstrap Dropdown 和 Jquery 更改 Bootstrap 表单
- android - 使用字符串时加载图像