如果您使用的是 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);
};
}