打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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

  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子类来实现各种常用功能,例如:

  过滤集合中特定的类型:

  1. //filter String type in a collection  
  2. Predicates.instanceOf(String.class);  

2个Predicate“与”和“或”:

  1. Predicates.and(predicate1, predicate2);  
  2. Predicates.or(predicate1, predicate2);  

非null:

  1. Predicates.notNull();  

用equals来做条件:

  1. Predicates.equalTo(target); 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
延迟执行与不可变,系统讲解JavaStream数据处理
Java进阶 之 Stream流
【Java】基础50:如何让写的代码像诗一样优雅?
python3 根据元素名删除列表元素
jQuery filter() 方法
python 的列表遍历删除
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服