怎么根据某些条件来过滤Collection的元素?我们可以在循环里面判断元素是否符合条件然后来remove元素。
Guava已经作了这样的功能。例如你要在String的list里面有"a","b","A",要把非大小写a的元素去掉可以这样:
返回的list2就只有"a"和"A"。要注意的是,原来作为参数传入的list里面还是3个元素,并没有因为被调了filter就被去掉 了"b"。另外这个方法作的很好的地方就是返回的list2是带有过滤功能的。也就是说如果你调了list2.add("c")这个方法会抛出 IllegalArgumentException,如果调集合的removeAll()和clear()方法也只会对符合predicate条件的元素 来操作,这个真的很cool!而且返回的集合不支持remove()。 另外Predicates还提供了很多Predicate子类来实现各种常用功能,例如: 过滤集合中特定的类型:
2个Predicate“与”和“或”:
非null:
用equals来做条件:
|
|
来自: 贾朋亮博客 > 《Guava学习笔记》