A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

Java8为Collection集合新增了一个removelf(Predicate filter)方法,该方法将会批量删除符合filter条件的元素。该方法需要一个Predicate(谓词)对象作为参数,Predicate也是函数式接口,因此可以使用Lambda表达式。
如下程序示范了使用Predicate来过滤集合。

package base1;
import java.util.*;
import java.util.function.Predicate;
public class test {
    public static void main(String[] args){
        Collection books = new HashSet();
        books.add("轻量级java EE企业应用实践");
        books.add("疯狂java讲义");
        books.add("疯狂ios讲义");
        books.add("疯狂Ajax讲义");
        books.add("疯狂Android讲义");
        books.removeIf(ele->((String)ele).length()<10);
        System.out.println(books);
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
上面程序调用了Collection集合的removelf(Predicate filter)方法批量删除集合中符合条件的元素,程序传入了一个lambda表达式作为过滤条件:所有长度小于10的字符串元素都会被删除。编译运行代码,可以看到如下输出:

[轻量级java EE企业应用实践, 疯狂Android讲义]
1
2
如下程序示范Predicate简化集合的运算。

package base1;
import java.util.*;
import java.util.function.Predicate;
public class test {
    public static void main(String[] args){
        Collection books = new HashSet();
        books.add("轻量级java EE企业应用实践");
        books.add("疯狂java讲义");
        books.add("疯狂ios讲义");
        books.add("疯狂Ajax讲义");
        books.add("疯狂Android讲义");
        System.out.println(calAll(books,ele->((String)ele).contains("疯狂")));
        System.out.println(calAll(books,ele->((String)ele).contains("java")));
        System.out.println(calAll(books,ele->((String)ele).length() > 10));
    }

    private static int calAll(Collection books, Predicate p) {
        // TODO Auto-generated method stub
        int total = 0;
        for(Object obj : books){
            if(p.test(obj)){
                total++;
            }
        }
        return total;
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
运行结果:

4
2
2
1
2
3
该程序有如下三个统计需求:

统计书名中出现”疯狂”字符串的图书数量;
统计书名中出现”java”字符串的图书数量;
统计书名长度大于10的图书数量。
---------------------
【转载】
作者:阳光女孩prl
原文:https://blog.csdn.net/prlsunshine/article/details/75638972


4 个回复

倒序浏览
ヾ(◍°∇°◍)ノ゙
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马