У меня есть Map<B, List<A>>
. Я хочу отфильтровать некоторое A на основе некоторого предиката, который опирается на ключ записи карты типа B. Например, вот моя структура данных:
List<Integer> list1 = Arrays.asList(5,2,3,4);
List<Integer> list2 = Arrays.asList(5,6,7,8);
List<Integer> list3 = Arrays.asList(9,10,11,12,13);
List<Integer> list4 = Arrays.asList(11,23,112);
Map<Long, List<Integer>> map = new HashMap<>();
map.putIfAbsent(2L, list1);
map.putIfAbsent(3L, list2);
map.putIfAbsent(4L, list3);
map.putIfAbsent(5L, list4);
Теперь я хочу перебрать набор записей карты и создать новую карту, имеющую список, содержащий элементы, кратные ключу этой записи. т.е. результат должен выглядеть следующим образом:
2L --> List of (2, 4)
3L --> List of (6)
4L --> List of (12)
5L --> empty List
Предикат фильтрации использует значение ключа записи карты для проверки элементов списка. Как я могу добиться этого без изменения исходной карты?