Java8Stream(2)遍历List Java8 Stream 遍历 List
⼀、Java8之前遍历List的⽅式
1. Iterator迭代器
Iterator<String> iterator = codeList.iterator();
while(iterator.hasNext()){
System.out.());
}
java stream2. for循环
for(int i =0; i < codeList.size(); i++){
System.out.(i));
}
3. 增强的for循环
for(String code : codeList){
System.out.println(code);
}
⼆、Java8遍历List⽅式
Java8的forEach确实使⽤⽅便
codeList.forEach(a ->{
System.out.println("code = "+ a);
});
要对数据先过滤 != null,再遍历
codeList.stream()
.
filter(a -> a != null)
.forEach(a -> System.out.println("code = "+ a));
上⾯的a != null可以⽤下⾯语句简写
codeList.stream()
.filter(Objects::nonNull)
.forEach(a -> System.out.println("code = "+ a));
三、并⾏流parallelStream的注意点
除了stream(), 还可以⽤parallelStream(), 在⼀些常见⽤parallelStream可以提⾼效率.
但是考虑到线程安全性, 我个⼈在⼯作中⼀般会注意下⾯事项
不要在parallelStream对集合写操作
不要在for循环中⽤parallelStream
四、有⼈说Java8 Stream forEach⽐较慢?
Java8是2014年发布的,现在都2021年了。
但是在⼯作中依然会碰到个别感觉⾃⼰很懂的⼈劝你不要⽤Java8 Stream。
这些⼈也就是⽹上看了点不专业的⽂章,写⼏个简单for循环和Stream⽐较。
在真实开发中,⼩批量数据的for循环和Java8 Stream差别不⼤,都挺快。
但是到业务复杂,处理⽐较耗时的情况,⽤并⾏流确实能提⾼效率,毕竟现在CPU都多核了。
这⾥不是吹Java8 Stream有多好,⽽是说在⾯对不同业务场景时,我们要⽤专业的眼光去选择⽤Iterator、for还是Stream。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论