[Java][Stream]人名筛选工具->引入stream流简化操作
2023-12-13 14:57:15
?这个小工具的作用很简单:
我已经在list集合中存入了若干个名字,现在我希望能够筛选出以张字开头并且名字是三位的,输出打印这些名字。
逻辑可以拆分一下:
第一步:从所有名字中筛选出含张的 存储到新的集合中
第二步:从新的集合中筛选出名字为3个字的,存到另外一个集合中
第三部:遍历最新的那个集合
在第一步我们涉及了字符串的一个函数StartsWith来判断一个字符串的首字符
在第二步我们使用了字符串的一个函数length来判断字符串的长度
在一二三步中我们均使用了for(元素类型 第三方变量名:需要遍历的集合){}这种增强for的表达形式
但是写完这些内容,我们觉得太繁琐了,因此渴望找到一种更简略的方式来进行筛选。
在JDK8以后出现了stream这个操作
我们可以来分析一下我们是如何使用stream的
第一步:将ArrayList对象转化为stream对象,我们是使用 .stream()来完成的。
第二步:利用filter筛选器+lambda表达式筛选名字是张开头的
第三步:利用filter筛选器+lambda表达式筛选字符串长度为3的
第四步:打印这个部分
新的方法存在一个优越性:你不需要写那么多的增强for循环了 二十多行代码所实现的内容被简化成了一行代码,可以有效的提高代码的可读性和便利性
?
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
//1.所有以张开头的储存到新集合中
ArrayList<String> list2 = new ArrayList<>();
for (String name : list) {
if (name.startsWith("张")) {
list2.add(name);
}
}
ArrayList<String> list3 = new ArrayList<>();
for (String name : list2) {
if (name.length() == 3) {
list3.add(name);
}
}
for (String s : list3 ) {
System.out.println(s);
}
//以上所有内容都可以用steam流简化
list.stream().filter(name->name.startsWith("张")).filter(name->name.length()==3).forEach(name->System.out.println(name));
}
}
文章来源:https://blog.csdn.net/qq_37511412/article/details/134943188
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!