如果您使用的是Java 8中,您可以用filter
获得的元素符合您的条件,例如使用lambda表达式。您也可以实现自定义Predicate
和使用,在filter
List<MyObject> objects = Arrays.asList(
new MyObject("foo", 1, 42),
new MyObject("foo", 3, 23),
new MyObject("bar", 3, 42),
new MyObject("foo", 4, 42));
List<MyObject> filtered = objects.stream()
.filter(o -> o.typeOfObject.equals("foo") && o.value == 42)
.collect(Collectors.toList());
System.out.println(filtered);
输出是[(foo,1,42), (foo,4,42)]
,使用这个测试类:
class MyObject {
String typeOfObject;
Integer anInteger;
Integer value;
public MyObject(String type, int i, int v) {
this.typeOfObject = type;
this.anInteger = i;
this.value = v;
}
public String toString() {
return String.format("(%s,%d,%d)", typeOfObject, anInteger, value);
};
}
如果'Predicate'适用于一个属性,有关链接谓词如何?另外,你究竟试过了什么,'stream()。filter(...)'? – 2014-09-04 12:36:15
通过清单并获得您需要的内容怎么样? – iberbeu 2014-09-04 12:38:38
@tobias_k你有一个例子吗? – BnJ 2014-09-04 12:39:52