subList(int fromIndex, int toIndex)是List接口提供的视图操作,用于在常数时间内获取原List的一个子列表。
1、优点
subList()不复制数据,而是基于原列表的视图(View),避免额外的内存开销
2、底层实现
subList()不会创建新的列表对象,而是返回AbstractList#SubList视图,它仅维护:
offset(偏移量):起始索引fromIndex
size(子列表大小):toIndex - fromIndex
原List的引用:子列表依赖原List进行操作
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
List<Integer> subList = list.subList(2, 6); // [3, 4, 5, 6]
System.out.println(subList);
subList.set(0, 99);
System.out.println(list); // 原列表同步修改 -> [1, 2, 99, 4, 5, 6, 7, 8, 9, 10]
subList()不复制数据,而是直接修改原List