¿Cómo comparar la lista de objetos con la lista larga de Java 8

mohammad_soleimani:

Estoy tratando de comparación 2 listas, primer tipo lista es larga y segundo objeto Lista de empleados, y quiero conjunto de resultados en un Map<ID, Exists>( Map<Long, Boolean>).

Nota: primera lista tiene más de artículos de segunda lista

List<Employee> employees = List.of(new Employee(2), new Employee(4), new Employee(6));
List<Long> ids = List.of(1L, 2L, 3L, 4L, 5L, 6L);

i necesidad de salida

1 : false
2 : true
3 : false
4 : true
5 : false
6 : true

mi código es:

resultMap = employees.stream().collect( Collectors.toMap(Employee::getId, ( 
                 anything -> 
                                 ids.contains(anything.getId() ) )));
for (Entry<Long, Boolean> entity : resultMap.entrySet()) {
   System.out.println(entity.getKey() + " : " + entity.getValue());
}

pero el caudal es:

2 : true
4 : true
6 : true
Hadi J:

Prueba esto:

Set<Long> employeesId =repository.getByIds(ids).stream()
          .map(Employee::getId)
          .collect(Collectors.toSet());

luego

Map<Long,Boolean> map =  ids.stream()
                    .collect(Collectors
                        .toMap(Function.identity(),id->employeesId.contains(id)));

Supongo que te gusta

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