Если предположить, что ваш боб имеет добытчик следующий подход может оказаться полезным. Используется составной ключ, а значение Map
- это List<Bean>
(вместо этого это может быть, например, List<String>
с, если это необходимо).
Итак, я бы использовал цикл и собирал все значения, а затем использовал составной ключ. Один путь состоит в использовании Pair
класс от commons-lang3
:
final Map<Pair<String, String>, List<Bean>> map = new HashMap<Pair<String, String>, List<Bean>>();
for (final Iterator<Bean> itr = beans.iterator(); itr.hasNext();) {
Bean bean = itr.next();
final Pair<String, String> key = Pair.of(bean.getId(), bean.getName());
List<Bean> value = map.get(key);
if (value != null) {
value = new ArrayList<Bean>();
map.put(key, value);
}
value.add(bean);
}
В вашем Maven POM или аналогичный, импортировать следующий артефакт:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
Этот подход является безопасным, если вы не знаете, что ваши идентификаторы и имена будут выглядеть. Если ваш ключ, например, содержит букву -
, а составной ключ не должен быть «id +» - «+ name».
Также обратите внимание, что существует множество библиотек, которые предлагают Pair
-классы или аналогичные. Иногда класс можно назвать Tuple
.
вы имеете в виду у вас есть составные ключи с идентификатором и именем и списком значений? – SMA
@almasshaikh Возможно Да, я не уверен в этом – ScrapCode
Для данного идентификатора имя всегда будет одинаковым? – Krease