比如list中有好多名字,现需要过滤。取开头为张,长度为3条件。
传统的写法:
public void a(){
List<String> l= new ArrayList<>();
List<String> l1 = new ArrayList<>();
List<String> l2 = new ArrayList<>();
l.add("张一一");
l.add("李二二");
//先找张开头的
for(String s : l){
if (s.startsWith("张")){
//开头为张,将其存进新列表 l1.
l1.add(s);
}
}
//找长度为三的
for (String ss: l1){
if (ss.length()==3){
l2.add(ss);
}
}
for ( String sss: l2){
System.out.println(sss);
}
项目经理!!!
List<String> l= new ArrayList<>();
l.add("张一一");
l.add("李二二");
//用stream流,它的实现是常用函数接口实现如:predict,function。
l.stream().filter(s->s.startsWith("张")) //这里加{}大括号会报错,是因为返回值类型。stream返回bolean类型。这里不需要返回
//上面错了,是因为大括号中没有return ,加个return就好了。
.filter(s->s.length()==3)
.forEach(s-> System.out.println(s));
数组 列表 map 都可以转换为流,Stream .of() 里面传参数。
方法有filter,foreach,skip(跳过前几个),map(转换类型)limit(取前几个),concat(连接两个流)