Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

java实战演练35讲 PDF 下载


分享到:
时间:2023-10-27 08:55来源:http://www.java1234.com 作者:转载  侵权举报
java实战演练35讲
失效链接处理
java实战演练35讲 PDF 下载


 
 
相关截图:
 
主要内容:
 

1.2. new ArrayList
 
上面的数组转list方式虽然是最简单的,但不一定是合适的,特别是当我们可能对转换后的list进行
操作时,可能埋坑(而且这种坑还非常隐晦,代码层面上很难发现)
为了减少在代码里面下毒的可能性,不妨使用下面这种方式 new ArrayList<>
(Arrays.asList(ary))String[] ary = new String[]{ "1", "a"};
List<String> out = new ArrayList<>(Arrays.asList(ary));
out.add("hello");
System.out.println(out);
通过上面这种方式创建的List,就是我们熟知的 ArrayList 了
避雷预警
看到上面这个使用姿势,就很容易想到一个常见的踩雷点,比如我们的应用中,有一个全局共享
的配置列表,张三需要拿id为奇数的配置,李四拿id为偶数的配置,然后他们都是这么做的
list.removeIf(s -> s.id % 2 == 0);
然后跑了一次之后发现这个全局的列表清空了,这就是典型的没有做好资源隔离的case了,针对
这种场景,要么是限制使用方,直接针对全局的资源进行修改,要么就是使用方拿到的是一个隔
离的备份
禁止修改:
使用不可变的容器,如前面提到的 java.util.Arrays.ArrayList ()
使用 Collections.unmodifiableList 创建
List<String> unModifyList = Collections.unmodifiableList(out);
列表拷贝
new ArrayList<>(Arrays.asList(ary));
(上面这种属于深拷贝的实现,具体可以看一下jdk的源码实现)


1.3. Collections.addAll
 
第三种方式借助jdk提供的容器工具类 Collections 来实现




------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐