zoukankan      html  css  js  c++  java
  • Predicate与filter

    转: http://blog.csdn.net/michaellufhl/article/details/6329823

    怎么根据某些条件来过滤Collection的元素?我们可以在循环里面判断元素是否符合条件然后来remove元素。

      Guava已经作了这样的功能。例如你要在String的list里面有"a","b","A",要把非大小写a的元素去掉可以这样:

    [java] view plain copy
     
    1. Predicate<String> aPredicate =  new Predicate<String>(){  
    2.     @Override  
    3.     public boolean apply(String input) {  
    4.         if(input.toLowerCase().equals("a"))  
    5.             return true;  
    6.         else  
    7.             return false;  
    8. }};  
    9. Collection<String> list2 = Collections2.filter(list, aPredicate);  

    返回的list2就只有"a"和"A"。要注意的是,原来作为参数传入的list里面还是3个元素,并没有因为被调了filter就被去掉了"b"。另外这个方法作的很好的地方就是返回的list2是带有过滤功能的。也就是说如果你调了list2.add("c")这个方法会抛出IllegalArgumentException,如果调集合的removeAll()和clear()方法也只会对符合predicate条件的元素来操作,这个真的很cool!而且返回的集合不支持remove()。

      另外Predicates还提供了很多Predicate子类来实现各种常用功能,例如:

      过滤集合中特定的类型:

    [java] view plain copy
     
    1. //filter String type in a collection  
    2. Predicates.instanceOf(String.class);  

    2个Predicate“与”和“或”:

    [java] view plain copy
     
    1. Predicates.and(predicate1, predicate2);  
    2. Predicates.or(predicate1, predicate2);  

    非null:

    [java] view plain copy
     
    1. Predicates.notNull();  

    用equals来做条件:

    [java] view plain copy
     
    1. Predicates.equalTo(target);  
  • 相关阅读:
    eclipse的下载安装
    找不到符号 类string
    [转]Android_开源框架_AndroidUniversalImageLoader网络图片加载
    [转]移动web开发经验总结
    测试一下吧
    javascript 的 encodeURIComponent 函数用 Objective-C 实现
    几个Objective-C的HTML解析库
    html test
    一段测试代码
    [转]Embed WebView in Fragment
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/6800602.html
Copyright © 2011-2022 走看看