marti6addams:
私は、次の問題を解決するには、Java 8を使用しようとしています。私は、次の(していると言うA
とB
カスタムクラスです)
ArrayList<A> skills;
HashSet<B> workCenters;
私は何をする必要があると、値かどうかを見つけることですa.getDepartment()
されてString
も、中に含まれてB
いるにも方法がありますString getDepartment()
し、新しいにそれらを収集しますList<A>
。
私はそのような試みました:
List<A> collect = skills.stream()
.filter(s -> workCenters.contains(s.getDepartment())
.collect(Collectors.toList());
私は取得できませんでしたので、この場合には、私は右のそれをしないgetDepartment()
からworkCenters
。正しい解決策は何でしょうか?
ernest_k:
あなたは、変換して始めることができHashSet<B>
にHashSet<String>
して、あなたのコードを使用します。
Set<String> bDeps = workCenters.stream()
.map(B::getDepartment)
.collect(Collectors.toSet());
List<A> collect = skills.stream()
.filter(s -> bDeps.contains(s.getDepartment()))
.collect(Collectors.toList());