二维list的使用(java)
前言:
想必大家对int[ ] [ ]这样的二维数组的初始化,赋值,遍历已经很熟悉了,但java中的二维list就很少能接触到。但遇到了也不慌,接下来就对二维的list深入使用。
初始化:
先导入java.util.ArrayList和java.util.List这两个包
(这里使用Integer类型做示范,String类型也可,其它类型有些适用)
这里主要推荐两种写法:(都差不多)
一:直接add一个List
List<List<Integer>> list = new ArrayList<List<Integer>>();//初始化
List one = new ArrayList();
List two = new ArrayList();
one.add(1);
one.add(2);
two.add(4);
two.add(5);
list.add(one);
list.add(two);
二:{{}}的方法
List one = new ArrayList();
List two = new ArrayList();
one.add(1);
one.add(2);
two.add(4);
two.add(5);
List<List<Integer>> list = new ArrayList<List<Integer>>(){{
add(one);
add(two);
}};
当然还有其它的初始化方法,这里写出了比较常用的。
重点来了!!
遍历:
一:普通的for
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.get(i).size(); j++) {
System.out.print(list.get(i).get(j) + " ");
}
System.out.println();
}
不必多说:
.size() .get()都是list内置的函数。
二:进阶的for
for(List list0 : list){
for(Object list1 : list0){
System.out.print(list1 + " ");
}
System.out.println();
}
另外一种更好的写法:(养成习惯,把类型都给加上)
for(List<Integer> list0 : list){
for(Integer list1 : list0){
System.out.print(list1 + " ");
}
System.out.println();
}
for-each循环,这也没啥好说的。
三:使用迭代器
Iterator iterator = list.iterator();
while (iterator.hasNext()) {//迭代器一般都使用while
List<Integer> t = new ArrayList<>();
t = (List<Integer>) iterator.next();
Iterator iterator1 = t.iterator();
while (iterator1.hasNext()) {
System.out.print(iterator1.next() + " ");
}
System.out.println();
}
要导入java.util.Iterator包,.next() .hasNext()都是内置函数(不懂建议看官方文档)
个人感觉:其实使用迭代器还是c++(.end())用得方便。
四:扩展(将二维list转换为二维数组)
使用 toArray() 方法:
注意:这里的 T 只能是基本数据类型的包装类或者引用类型 ,如 Integer ,String 等,而不是 int 等基本数据类型
<T> T[] toArray(T[] a);
Integer[][] res = new Integer[list.size()][];// 存放转换结果的 二维数组
for (int i = 0; i < res.length; i++) {
res[i] = list.get(i).toArray(new Integer[list.get(i).size()]);
}
for (int i = 0; i < res.length; i++) {//普通输出
for (int j = 0; j < res[i].length; j++) {
System.out.print(res[i][j] + " " );
}
System.out.println();
}
直接转换:
Integer[][] res = new Integer[list.size()][];// 存放转换结果的 二维数组
for(int i = 0; i < res.length; i++){ // 遍历二维数组
res[i] = new Integer[list.get(i).size()]; // 初始化第二维
for(int j = 0; j < list.get(i).size(); j++){ // 将list中的值赋给数组
res[i][j] = list.get(i).get(j);
}
}
for (int i = 0; i < res.length; i++) {//普通输出
for (int j = 0; j < res[i].length; j++) {
System.out.print(res[i][j] + " " );
}
System.out.println();
}
以上遍历输出结果都为下图所示:文章来源:https://www.toymoban.com/news/detail-709210.html
文章来源地址https://www.toymoban.com/news/detail-709210.html
到了这里,关于二维list的使用(java)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!