Итак, у меня есть список пользователей с несколькими данными, включая идентификатор компании, это значение можно найти у нескольких пользователей, поскольку оно определяет, к какой компании принадлежит пользователь. Мне нужно создать карту списка пользователей, где ключом карты является uid компании. Мне удалось сделать это с помощью этого кода:
HashMap<String, List<LDAPUser>> allUsers = new HashMap<>();
userService.findAllUsers().forEach(u -> {
Optional.ofNullable(allUsers.putIfAbsent(u.getCompanyUid(),
new ArrayList<>(Collections.singletonList(u))))
.ifPresent(list -> list.add(u));
});
Даже если это работает нормально, я думаю, что должен быть более чистый подход с использованием метода flatMap, map или collect из потока, но я не могу заставить его работать в основном, потому что я не понимаю, как я могу создать список, содержащий всех пользователей.