Drew13:
私は、Javaオブジェクト(getterとsetterを想定)のリストを持っています:
Record(String name, String part, String value);
私は、リストには、特定の含まれている場合のためのブール値を返す必要がname
値と一定part
値を。
私はそれが一度に一つのフィルタのために働いてい:
//assume records are added to this list
List<Record> masterList = new ArrayList<Record>();
boolean check = masterList.stream().map(Record::getName).filter(record.getName()::equals).findFirst().isPresent();
しかし、私はエラーを取得するNon-static method cannot be referenced from a static context
にはRecord::getPart
、この試みのために:
masterList.stream().map(Record::getName).filter(record.getName()::equals).map(Record::getPart).filter(record.getPart()::equals).findFirst().isPresent();
Ousmane D .:
あなたが実行したときに何をしようとしていることだけで可能すなわちないmap(Record::getName)
あなたが持っているStream<String>
ことが唯一のレコード名に基づいてされた後、すべての文字列は、レコード名および任意の連鎖メソッド呼び出しがどこにありますか。
代わりに、1つだけを使用しますfilter
:
boolean check = masterList.stream()
.filter(s -> s.getName().equals(record.getName()) &&
s.getPart().equals(record.getPart()))
.findFirst().isPresent();
以上の使用 anyMatch
boolean check = masterList.stream()
.anyMatch(s -> s.getName().equals(record.getName()) &&
s.getPart().equals(record.getPart()));
編集:
それは1人のレコード一致する名前、および他のレコードのマッチング一部にすることができたら?
次のように、あなたはセットにすべてのレコード名やパーツを収集することができます。
Set<String> container = masterList.stream()
.flatMap(r -> Stream.of(r.getName(), r.getPart()))
.collect(toSet());
その後の操作を行います。
boolean result = container.contains(record.getName()) &&
container.contains(record.getPart()) ;