2017-04-13 25 views
3

在Java 8中,我可以使用流來過濾部分字符串嗎?在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()); 

回答

6

沒有爲String沒有toUpper()方法。

這是toUpperCase(),你也需要使用檢查「黑」在哪裏有整串的,所以代碼應該很簡單,如下圖所示:

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 
+0

我更正了toUpper toUpperCase – Dale

2

使用正則表達式:

List<Animal> filtList = list.stream() 
    .filter(x -> x.getName().matches("(?i).*black.*")) 
    .collect(Collectors.toList()); 

正則表達式標誌"(?)"表示「忽略大小寫」。

相關問題