element.getAlias()
, который вы используете в качестве ключа для hashmap, вероятно, одинаков для некоторых элементов.
Map
ключи уникальны, что означает, что если вы вставляете записи (1, "один"), а затем (1," два ") первое значение будет переопределено последним.Если вы хотите, чтобы несколько значений были сопоставлены одной клавише, используйте Map<String, Collection<Object>>
или Multimap
из Гуавы, что в точности то же самое.
Вы можете вставить в мультикарту эту функцию - если клавишаотсутствует на карте, создайте новый ArrayList
и добавьте его на карту, в противном случае верните существующий.Затем вставьте значение в список:
values
.computeIfAbsent(element.getAlias, k -> new ArrayList<>())
.add(tuple.get(element));