前言
在java中,stream.filter
方法用于对流中的元素进行筛选。filter
方法接受一个predicate
(一个返回布尔值的函数),然后返回一个包含所有匹配元素的新流。
使用场景
假设有一个包含多个元素的集合,需要对其中的元素进行筛选,只保留满足特定条件的元素。
示例代码
以下是一些使用stream.filter
方法的示例:
1. 过滤列表中的偶数
import java.util.arrays; import java.util.list; import java.util.stream.collectors; public class filterexample { public static void main(string[] args) { list<integer> numbers = arrays.aslist(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); list<integer> evennumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(collectors.tolist()); system.out.println(evennumbers); // 输出: [2, 4, 6, 8, 10] } }
2. 过滤包含特定字符串的字符串列表
import java.util.arrays; import java.util.list; import java.util.stream.collectors; public class filterexample { public static void main(string[] args) { list<string> words = arrays.aslist("apple", "banana", "cherry", "date", "fig", "grape"); list<string> filteredwords = words.stream() .filter(word -> word.contains("a")) .collect(collectors.tolist()); system.out.println(filteredwords); // 输出: [apple, banana, grape] } }
3. 过滤对象列表
假设有一个person
类,并希望过滤出年龄大于18岁的人。
import java.util.arrays; import java.util.list; import java.util.stream.collectors; class person { private string name; private int age; public person(string name, int age) { this.name = name; this.age = age; } public int getage() { return age; } public string getname() { return name; } @override public string tostring() { return "person{name='" + name + "', age=" + age + "}"; } } public class filterexample { public static void main(string[] args) { list<person> people = arrays.aslist( new person("john", 20), new person("jane", 17), new person("tom", 25), new person("lucy", 15) ); list<person> adults = people.stream() .filter(person -> person.getage() > 18) .collect(collectors.tolist()); adults.foreach(system.out::println); // 输出: // person{name='john', age=20} // person{name='tom', age=25} } }
说明
stream()
:将集合转换为流。filter(predicate)
:过滤流中的元素,保留满足条件的元素。collect(collectors.tolist())
:将流转换回列表。
使用predicate接口
predicate
是一个函数式接口,定义了一个test
方法,用于对给定的输入进行评估。
可以创建自定义的predicate
,如下所示:
import java.util.function.predicate; public class custompredicateexample { public static void main(string[] args) { predicate<integer> iseven = n -> n % 2 == 0; predicate<integer> ispositive = n -> n > 0; boolean result1 = iseven.test(4); // true boolean result2 = ispositive.test(-1); // false system.out.println(result1); // 输出: true system.out.println(result2); // 输出: false } }
总结
stream.filter
是java stream api中的一个强大工具,可以简洁地对集合进行筛选操作。通过结合使用lambda表达式和predicate
接口,可以方便地创建各种筛选条件。
下一步建议:
a. 使用其他stream操作(如map
、reduce
)与filter
结合进行复杂的数据处理。
b. 实现自定义predicate
来筛选更复杂的条件。
到此这篇关于java中处理stream.filter()的文章就介绍到这了,更多相关java处理stream.filter()内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论