使用Java 8新增的Predicate操作来操作集合

来源:互联网 发布:卢比奥生涯数据 编辑:程序博客网 时间:2024/06/05 16:38

Java 8为Collection集合新增了一些需要Predicate参数的方法,这些方法可以对集合元素进行过滤。程序可使用Lambda表达式构建Predicate对象。

1 代码示例

import java.util.*;import java.util.function.*;public class PredicateTest2{public static void main(String[] args){// 创建books集合、为books集合添加元素的代码与前一个程序相同。Collection books = new HashSet();books.add(new String("轻量级Java EE企业应用实战"));books.add(new String("疯狂Java讲义"));books.add(new String("疯狂iOS讲义"));books.add(new String("疯狂Ajax讲义"));books.add(new String("疯狂Android讲义"));// 统计书名包含“疯狂”子串的图书数量System.out.println(calAll(books , ele->((String)ele).contains("疯狂")));// 统计书名包含“Java”子串的图书数量System.out.println(calAll(books , ele->((String)ele).contains("Java")));// 统计书名字符串长度大于10的图书数量System.out.println(calAll(books , ele->((String)ele).length() > 10));// 使用Lambda表达式(目标类型是Predicate)过滤集合books.removeIf(ele -> ((String)ele).length() < 10);System.out.println(books);}public static int calAll(Collection books , Predicate p){int total = 0;for (Object obj : books){// 使用Predicate的test()方法判断该对象是否满足Predicate指定的条件if (p.test(obj)){total ++;}}return total;}}

 

2 运行结果

4
2
2
[疯狂Android讲义, 轻量级Java EE企业应用实战]

 

3 代码分析

该代码完成了以下4个需求

  • 统计书名中出现“疯狂”字符串的图书数量。
  • 统计书名中出现“Java”字符串图书数量。
  • 统计书名长度大于10的图书数量。
  • 删除书名长度小于10的图书。
0 0
原创粉丝点击