从带有流java 8的列表中搜索包含寄存器内部分文本的寄存器[重复]
Posted
技术标签:
【中文标题】从带有流java 8的列表中搜索包含寄存器内部分文本的寄存器[重复]【英文标题】:Searching registers that contains a part of text inside a registers from a List with stream java 8 [duplicate] 【发布时间】:2020-06-30 11:59:41 【问题描述】:我有这个 POJO。另外,我有一个学生列表,我想用流过滤哪些寄存器在他的学校名称中有文本santa
。在 SQL 中会是这样的:LIKE %SANTA%
public class Student
private String name;
private String lastName;
private String city;
private String schoolname;
private String telephone;
public String getName()
return name;
public void setName(String name)
this.name = name;
public String getLastName()
return lastName;
public void setLastName(String lastName)
this.lastName = lastName;
public String getCity()
return city;
public void setCity(String city)
this.city = city;
public String getSchoolname()
return schoolname;
public void setSchoolname(String schoolname)
this.schoolname = schoolname;
public String getTelephone()
return telephone;
public void setTelephone(String telephone)
this.telephone = telephone;
我想获取他的schoolname
包含字符串santa
的学生,你知道我怎样才能对流进行过滤吗?
我需要使用流,我不能使用 if 和 else 语句。
【问题讨论】:
你试过用流做点什么吗? 您可以将filter()
与正则表达式match()
一起使用。
这能回答你的问题吗? What is the best way to filter a Java Collection?
如果您需要有文字和视频的教程,这里是 - tutorials.jenkov.com/java-functional-programming/streams.html
【参考方案1】:
您可以使用stream()
和filter()
,其中students
是学生对象的列表。
students.stream().filter(student->student.getSchoolname().contains("santa")).collect(Collectors.toList());
【讨论】:
【参考方案2】:流过List
并应用filter()
检查Student
的学校名称是否包含“SANTA”。
List<School> input = ...
List<School> output =
input.stream()
.filter(s -> s.getSchoolname().contains("SANTA"))
.collect(Collectors.toList());
如果你想让这个过滤器不区分大小写,你可以写
.filter(s -> s.getSchoolname().toUpperCase().contains("SANTA"))
如果您想要包含“SANTA”的List
和不包含它的List
,您可以使用Collectors.partitioningBy()
:
List<School> input = ...
Map<Boolean,List<School>> output =
input.stream()
.collect(Collectors.partitioningBy(s -> s.getSchoolname().contains("SANTA")));
【讨论】:
非常感谢,我还需要知道如何获取不包含字符串“santa”的寄存器,请你帮我@Eran @fmd89 查看编辑 非常感谢@Eran 非常感谢!!!!以上是关于从带有流java 8的列表中搜索包含寄存器内部分文本的寄存器[重复]的主要内容,如果未能解决你的问题,请参考以下文章
通过流将带有列表的列表对象转换为Java 8中的映射[重复]