List<String> list = new ArrayList<>();
list.add("hello"); list.add("world");
List<String> subList = list.subList(1, 2);
list.add("to"); // 修改父列表
System.out.println(subList); // 拋出 ConcurrentModificationExceptionArrayList.subList 返回的 SubList 視圖直接引用父列表的底層數組 elementData,僅記錄 offset 和 size。父列表結構性修改(增/刪)導致 modCount 變化,子列表迭代器檢測到 expectedModCount != modCount 即拋出異常(fail-fast 機制)。
List<String> copy = new ArrayList<>(list.subList(1, 2)); 獨立數組,互不影響。Collections.unmodifiableList(list.subList(...)) 禁止修改,讀取安全。CopyOnWriteArrayList。默認對 subList 結果進行拷貝(new ArrayList<>(subList)),除非極度確定父列表不再修改且性能敏感。