Java数据结构那些事儿--列表套列表(List of List)
2020-07-15 06:16
411 查看
1. List of List使用规范
List<List<Integer>> list = new List<List<Integer>>() //错误写法,因为List是接口,不能实例化(Cannot instantiate the type List<List<Integer>>)。 List<List<Integer>> list = new ArrayList<ArrayList<Integer>>(); //错误写法,会报错:类型无法转换 List<LinkedList<Integer>> list = new LinkedList<LinkedList<Integer>>();//正确写法 List<List<Integer>> list = new LinkedList<List<Integer>>(); //正确写法 List<List<String>> ans = new ArrayList<>(); //正确写法
综上可得,定义列表套列表时泛型的类型参数必须相同或者类似于
new ArrayList<>();这种写法不定义泛型, 这种情况下会默认和前面的泛型保持一致,也是正确的写法
2. List of List深入解析
import java.util.ArrayList; import java.util.List; public class test { public static void main(String[] args) { List<List<String>> ans = new ArrayList<>(); List<String> tmp = new ArrayList<>(); tmp.add("aa"); ans.add(tmp); System.out.println("ans is: "); System.out.println(ans); //result 1. [[aa]] tmp.clear(); tmp.add("bb"); ans.add(tmp); System.out.println("ans is: "); System.out.println(ans); //result 2. [[bb], [bb]] } }
注意上述代码中的result 2, 使用过程中需要注意, 列表a连续将列表b add()了多次的情况下,只要列表b发生了变化, 列表a中所有子列表都会随之变化。 所以在有些我们不希望列表a中前面已经添加好的子列表变化的场景下,写代码或者算法题时这里应该创建一个新的临时列表存储每一个时刻的b列表的值。
import java.util.ArrayList; import java.util.List; public class test { public static void main(String[] args) { List<List<String>> ans = new ArrayList<>(); List<String> tmp = new ArrayList<>(); tmp.add("aa"); List<String> new_temp = new ArrayList<>(); new_temp.add(temp.get(0)); //ans.add(tmp); ans.add(new_tmp); System.out.println("ans is: "); System.out.println(ans); //result 1. [[aa]] tmp.clear(); tmp.add("bb"); List<String> new_temp = new ArrayList<>(); new_temp.add(temp.get(0)); ans.add(new_temp); //result 2. [[aa], [bb]] System.out.println("ans is: "); System.out.println(ans); } }
上面的例子往往用于for循环不断修改tmp列表的值并且需要将新列表的值add到ans列表中。
相关文章推荐
- 如何更新列表 list
- Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表
- python中几个常见的“黑盒子”之 列表list
- 易优CMS:arcpagelist 瀑布流分页列表
- Android零基础入门第39节:ListActivity和自定义列表项
- Python中列表(list)操作方法汇总
- 在jsp页面中不能通过${list.size}取列表长度
- initializer_list、初始化列表、列表初始化(转载)
- [中英双语] 数学缩写列表 (List of mathematical abbreviations)
- 分配大块内存与list列表buffer关联的思考
- Python对list列表结构中的值进行去重的方法总结
- Python基础数据类型(三)list 列表
- Python基础笔记系列三:list列表
- redis基础简介(一)- string(字符串)、list(列表)
- 遍历List列表进行选择性的删除操作
- Python中的列表(List)
- Python列表(list)基本属性及常用函数
- MySQL表分区(2)列表分区-list
- Java数据结构3_单链表 Linked List
- str字符串和list列表