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