為什么要謹慎使用Arrays.asList、ArrayList的subList?
點擊上方藍色字體,選擇“標星公眾號”
優(yōu)質(zhì)文章,第一時間送達
1. 使用Arrays.asList的注意事項
1.1 可能會踩的坑
List<Integer> statusList = Arrays.asList(1, 2);
System.out.println(statusList);
System.out.println(statusList.contains(1));
System.out.println(statusList.contains(3));
statusList.add(3);
System.out.println(statusList.contains(3));
1.2 原因分析
1.3 總結(jié)
2. 使用ArrayList的subList的注意事項
List<String> bookList = new ArrayList<>();
bookList.add("遙遠的救世主");
bookList.add("背叛");
bookList.add("天幕紅塵");
bookList.add("人生");
bookList.add("平凡的世界");
List<String> luyaoBookList = bookList.subList(3, 5);
System.out.println(bookList);
System.out.println(luyaoBookList);
2.1 修改原集合的值,會影響子集合
List<String> bookList = new ArrayList<>();
bookList.add("遙遠的救世主");
bookList.add("背叛");
bookList.add("天幕紅塵");
bookList.add("人生");
bookList.add("平凡的世界");
List<String> luyaoBookList = bookList.subList(3, 5);
System.out.println(bookList);
System.out.println(luyaoBookList);
// 修改原集合的值
bookList.set(3,"路遙-人生");
System.out.println(bookList);
System.out.println(luyaoBookList);
2.2 修改原集合的結(jié)構(gòu),會引起ConcurrentModificationException異常
List<String> bookList = new ArrayList<>();
bookList.add("遙遠的救世主");
bookList.add("背叛");
bookList.add("天幕紅塵");
bookList.add("人生");
bookList.add("平凡的世界");
List<String> luyaoBookList = bookList.subList(3, 5);
System.out.println(bookList);
System.out.println(luyaoBookList);
// 往原集合中添加元素
bookList.add("早晨從中午開始");
System.out.println(bookList);
System.out.println(luyaoBookList);
2.3 修改子集合的值,會影響原集合
List<String> bookList = new ArrayList<>();
bookList.add("遙遠的救世主");
bookList.add("背叛");
bookList.add("天幕紅塵");
bookList.add("人生");
bookList.add("平凡的世界");
List<String> luyaoBookList = bookList.subList(3, 5);
System.out.println(bookList);
System.out.println(luyaoBookList);
// 修改子集合的值
luyaoBookList.set(1,"路遙-平凡的世界");
System.out.println(bookList);
System.out.println(luyaoBookList);
2.4 修改子集合的結(jié)構(gòu),會影響原集合
List<String> bookList = new ArrayList<>();
bookList.add("遙遠的救世主");
bookList.add("背叛");
bookList.add("天幕紅塵");
bookList.add("人生");
bookList.add("平凡的世界");
List<String> luyaoBookList = bookList.subList(3, 5);
System.out.println(bookList);
System.out.println(luyaoBookList);
// 往子集合中添加元素
luyaoBookList.add("早晨從中午開始");
System.out.println(bookList);
System.out.println(luyaoBookList);
2.5 原因分析
public List<E> subList(int fromIndex, int toIndex) {
subListRangeCheck(fromIndex, toIndex, size);
return new SubList(this, 0, fromIndex, toIndex);
}
2.6 總結(jié)
作者 | 申城異鄉(xiāng)人
來源 | csdn.net/zwwhnly/article/details/109583990

評論
圖片
表情

















