Arrays.asList()对比List.of()

1、Arrays.asList()返回一个可变集合,List.of()返回一个不可变集合。

List<Integer> list = Arrays.asList(1, 2, null);
list.set(1, 10);     // ok

List<Integer> list  = List.of(1, 2, 3);
list.set(1, 10);    // Fails with UnsupportedOperationException

2、Arrays.asList()允许空元素,List.of()不允许。

List<Integer> list = Arrays.asList(1, 2, null); // OK
List<Integer> list = List.of(1, 2, null); // Fails with NullPointerException

3、Arrays.asList 作用于数组时,返回的是原数组的视图 List.of 则不是。

Integer[] array = {1,2,3};
List<Integer> list = Arrays.asList(array);
array[1] = 10;
System.out.println(list); // Prints [1, 10, 3]
 
Integer[] array = {1,2,3};
List<Integer> list = List.of(array);
array[1] = 10;
System.out.println(list); // Prints [1, 2, 3]

并发修改异常的注意点

循环删除 倒数第一 第二个数据时不会异常

List<String> tmpList = new LinkedList<>();
tmpList.add("Hello");
tmpList.add("My");
tmpList.add("Son");

for (String curStr : tmpList) {
    if ("Hello".equals(curStr)) {
        tmpList.remove(curStr);
    }
    System.out.printf("curStr = %s, tmpLIst = %s\n", curStr, tmpList.toString());
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容