介绍
通过下面案例,快速体验 传统方式 与 Stream 方式 的区别,以及 Stream 方式 的好处
问题
有下面集合:
List<String> list = new ArrayList<>();
Collections.addAll(list,"李雷", "韩梅梅", "lucy", "lisi","李小四");
过滤出 “李姓” 的数据
传统方式
List<String> list = new ArrayList<>();
Collections.addAll(list,"李雷", "韩梅梅", "lucy", "lisi","李小四");
List<String> resList = new ArrayList<>();
for(String item : list){
if(item.startsWith("李")){ // 过滤姓李的数据
resList.add(item); // 将其放入到新List中
}
}
System.out.println(resList);
优点:
- 传统编码方式,易于阅读理解
缺点:
- 代码多
- 效率低
- 不符合现代开发语言
类比:相当于传统功能手机,该有的功能都有,但不好用,不符合现代人使用智能手机习惯
Stream方式
List<String> list = new ArrayList<>();
Collections.addAll(list,"李雷", "韩梅梅", "lucy", "lisi","李小四");
// 通过一行代码就能实现,而且代码简单高效
List<String> resList = list.stream()
.filter(item -> item.startsWith("李")) // 过滤姓李的数据
.collect(Collectors.toList()); // 将符合条件的数据,收集到List中
System.out.println(resList);
优点:
- 通过一行代码就能实现
- 代码简单高效
缺点:
- 由于使用 lambda 表达式,可读性差