el filtrado de los valores en la lista en función de los valores en conjunto

marti6addams:

Estoy tratando de utilizar Java 8 para resolver el problema siguiente. Decir que tengo la siguiente ( Ay Bson clases personalizadas)

ArrayList<A> skills;
HashSet<B> workCenters;

Lo que tengo que hacer es encontrar si el valor a.getDepartment()que se una Stringtambién contenida en Bel cual también tiene un método String getDepartment()y después de recoger aquellos en los nuevos List<A>.

Probé tales:

 List<A> collect = skills.stream()
     .filter(s -> workCenters.contains(s.getDepartment())
     .collect(Collectors.toList());

pero en este caso no hago las cosas bien porque no podía recuperar getDepartment()a partir workCenters. ¿Cuál sería la solución correcta?

ernest_k:

Se podría empezar con la conversión HashSet<B>a HashSet<String>y luego usar su código:

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());

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=195938&siteId=1
Recomendado
Clasificación