package com.company;
import java.util.ArrayList;
import java.util.List;
public class SubListTest {
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
stringList.add("晓");
stringList.add("看");
stringList.add("天");
stringList.add("色");
stringList.add("暮");
stringList.add("看");
stringList.add("云");
List<String> subList = stringList.subList(2, 4);
System.out.println("原始列表:" + stringList.toString());
System.out.println("子列表:" + subList.toString());
System.out.println("子列表长度:" + subList.size());
subList.set(1, "秀强");
System.out.println("子列表:" + subList.toString());
System.out.println("原始列表:" + stringList.toString());
}
}
OUTPUT
原始列表:[晓, 看, 天, 色, 暮, 看, 云]
子列表:[天, 色]
子列表长度:2
子列表:[天, 秀强]
原始列表:[晓, 看, 天, 秀强, 暮, 看, 云]
关联阅读
【强制】在subList场景中,高度注意对父集合元素的增加或删除,均会导致子列表的遍历、增加、删除产生 ConcurrentModificationException 异常。
【强制】ArrayList 的 subList 结果不可强转成 ArrayList,否则会抛出 ClassCastException 异常:java.util.RandomAccessSubList cannot be cast to java.util.ArrayList。
说明:subList()返回的是 ArrayList 的内部类 SubList,并不是 ArrayList 本身,而是 ArrayList 的一个视图,对于 SubList 的所有操作最终会反映到原列表上。
–《Java开发手册(嵩山版)》