私はオブジェクトのリストを持っていますが、オブジェクトのリストがもう一つあります。両方のオブジェクトは同じではなく、一般的にはあまり関係がありませんただし、1つのプロパティを共有する点を除き、一致した場合には同じプロパティを使用します。私は、他のリストから1つのリストの項目を除外したいと思います。他のオブジェクトのリストに基づくオブジェクトのリストからJava 8のフィルタオブジェクトが外されている
例: オブジェクトAppleにはStringプロパティの名前とブール値isOrderedがあります。 オブジェクトフルーツ:文字列プロパティを持ちます。名前とブール値を使用できます。
セイのArrayListリンゴは、名前がfuji、pink lady、およびArrayListのフルーツ、fuji、pink lady、gala、williams、
結果リストには、ガラ、ウィリアムズ、umeを含む果物のリストがあります。
これはループで達成することができ、古いJavaメソッドで:hasEntryは、データベースからすべてのりんごを取得し、リストをループまたは直接データベース内fruitnameを探してされているいずれかで
for (Fruit fruit: fruits) {
if (!hasEntry(apples, fruit.getName())) {
result.add(fruit)
}
}
。どちらの方法も遅いです。
オブジェクトが同じ場合は、単にfruits.removeAll(リンゴ)を使用できます。 java 8 list.filterは、自分のリストのオブジェクトであれば、別のものではなくプロパティをチェックするためにも機能しているようです。
フィルタは、異なるオブジェクトを持つ2つのリストでも使用できますか?
HashSetのは良い方法のように見えるように、私は抽出のために、データベースからリンゴのリストからすべての名前をストリームマップ機能を使用することができます。 これを実行する方法もありますか? –
kumoyadori
@kumoyadori私の編集を参照してください。そんな感じ –