一、基本概念
list.stream().filter是Java 8中常用來處理集合的方法之一,其作用是過濾出滿足特定條件的元素,返回一個滿足條件的新集合。該方法基於Stream流實現,可以使用Lambda表達式或者方法引用作為條件判斷,返回的集合可以是任意類型,例如List、Set等。
二、應用場景
1、過濾出滿足某一條件的元素
List<String> strings = Arrays.asList("Java", "Python", "C#", "PHP", "JavaScript");
List<String> result = strings.stream()
.filter(str -> str.length() <= 4)
.collect(Collectors.toList());
上述代碼中,我們使用了filter來過濾出字元串長度小於等於4的元素,返回一個新的List。
2、多條件組合篩選
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 35),
new Person("David", 40)
);
List<Person> result = people.stream()
.filter(p -> p.getName().startsWith("A") && p.getAge() >= 25)
.collect(Collectors.toList());
上述代碼中,我們使用filter同時篩選出名字以字母”A”開頭並且年齡大於等於25歲的人,返回一個新的List。
3、類型轉換
List<String> strings = Arrays.asList("1", "2", "3");
List<Integer> result = strings.stream()
.map(Integer::valueOf)
.filter(i -> i <= 2)
.collect(Collectors.toList());
上述代碼中,我們先將字元串轉換成整型,再使用filter方法過濾出值小於等於2的元素,最後返回一個新的List。
三、代碼示例
下面是一個完整的示例代碼:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
//示例1:過濾出滿足某一條件的元素
List<String> strings = Arrays.asList("Java", "Python", "C#", "PHP", "JavaScript");
List<String> result1 = strings.stream()
.filter(str -> str.length() <= 4)
.collect(Collectors.toList());
System.out.println(result1); //[Java, C#, PHP]
//示例2:多條件組合篩選
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 35),
new Person("David", 40)
);
List<Person> result2 = people.stream()
.filter(p -> p.getName().startsWith("A") && p.getAge() >= 25)
.collect(Collectors.toList());
System.out.println(result2); //[Person{name='Alice', age=25}]
//示例3:類型轉換
List<String> strings2 = Arrays.asList("1", "2", "3");
List<Integer> result3 = strings2.stream()
.map(Integer::valueOf)
.filter(i -> i <= 2)
.collect(Collectors.toList());
System.out.println(result3); //[1, 2]
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/237077.html