2D ArrayList 用法
2D ArrayList Usage
我正在做一个编码问题,它使用了包含以下内容的 2D ArrayList:
[["HTML","C#"],
["C#","Python"],
["Python", "HTML"]]
我不想深入探讨问题所在,但本质上我想获取 2D ArrayList 中的元素并将它们作为单独的元素插入到 1D ArrayList 中。例如,如果我抓取:
["HTML","C#"]
在 1D 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
二维数组中看到的那样,我们使用 for each and then print values using
stream. for the next 2D
将其添加到一维 arraylist
arraylistwe can literally use
streaminside another
stream` 打印值。
最后的输出结果是这样的
==Print Values in 2D array==
HTML
CSS
JAVA
C++
Python
ruby
==Print Values 2D ArrayList==
HTML
CSS
JAVA
C++
Python
ruby
我正在做一个编码问题,它使用了包含以下内容的 2D ArrayList:
[["HTML","C#"],
["C#","Python"],
["Python", "HTML"]]
我不想深入探讨问题所在,但本质上我想获取 2D ArrayList 中的元素并将它们作为单独的元素插入到 1D ArrayList 中。例如,如果我抓取:
["HTML","C#"]
在 1D 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
二维数组中看到的那样,我们使用 for each and then print values using
stream. for the next 2D
将其添加到一维 arraylist
arraylistwe can literally use
streaminside another
stream` 打印值。
最后的输出结果是这样的
==Print Values in 2D array==
HTML
CSS
JAVA
C++
Python
ruby
==Print Values 2D ArrayList==
HTML
CSS
JAVA
C++
Python
ruby