Может быть, использовать Set для вашей задачи?Внутри forEach вы можете добавить инициализацию набора, а затем добавить туда свои значения.Когда вы вызываете метод add (), он возвращает false
, если значение уже есть в наборе, поэтому вы его отфильтруете.Вот мой фрагмент, я использую Список, но вы можете заменить его своим классом А
public static void main(String[] args) {
HashMap<String, List<Integer>> factDwhResultMap = new HashMap<>();
factDwhResultMap.put("k1", new ArrayList<>(Arrays.asList(1,2,3,3,null)));
factDwhResultMap.put("k2", new ArrayList<>(Arrays.asList(null,7,7,7,null)));
factDwhResultMap.entrySet().stream().forEach(aList -> {
Set resultSet = new HashSet();
aList.getValue().removeIf(a -> a == null || !resultSet.add(a));
System.out.println(aList);
});
}
Выходные данные
k1=[1, 2, 3]
k2=[7]