在Java 8中,我可以使用流来过滤部分字符串吗?
让我们假设我有一个动物清单,如:
Brown Bear
Black Bear
Black Crow
Red Herring
Owl
Sparrow
Blackbacked Flocking Crow
让我们假设所有动物名称都在动物对象列表中
public class Animal{
public name;
public animalType;
}
有没有办法找到所有黑色的动物,无论名称中的某个地方是什么情况。像下面这样......
List<Animal> filtList = employeeList.stream()
.filter(x -> "%Black%".toUpperCase().equals(x.getLastName().toUpper()))
.collect(Collectors.toList());
答案 0 :(得分:6)
toUpper()
没有String
方法。
它是toUpperCase()
,您还需要使用contains()
在整个字符串中的任何位置检查“BLACK”,因此代码应该很简单,如下所示:
List<Employee> filtList = inputList.stream().
filter(value -> value.toUpperCase().//convert to uppercase for checking
contains("BLACK")).//filter values containing black
collect(Collectors.toList());//collect as list
答案 1 :(得分:2)
使用正则表达式:
List<Animal> filtList = list.stream()
.filter(x -> x.getName().matches("(?i).*black.*"))
.collect(Collectors.toList());
正则表达式标志"(?)"
表示&#34;忽略大小写&#34;。