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