Я пытаюсь преобразовать следующий фрагмент кода, чтобы использовать ImmutableSetMultimap
, но у меня возникают проблемы, когда я пытаюсь выполнить map.get(...).add(...)
потому что он неизменен. Есть простой способ сделать это?
List<MyObject> objects
Map<Long, Set<Key>> map = new HashMap<Long, Set<Key>>();
for (MyObject entry : objects) {
if (map.containsKey(entry.getId())) {
map.get(entry.getId()).add(entry.getKey());
} else {
Set<Key> newSet = new HashSet<Key>();
newSet.add(entry.getKey());
map.put(entry.getId(), newSet);
}
}
У ImmutableSetMultimap есть построитель:
ImmutableSetMulitimap.Builder<Key, Value> builder = ImmutableSetMulitimap.builder();
for (Entry<Key, Value> entry : entries) {
builder.put(entry.getKey(), entry.getValue());
}
ImmutableSetMulitimap<Key, Value> map = builder.build();
Для получения дополнительной информации см. Javadoc
builder.put(key, value)
, тогда все значения будут в наборе. Если вы сделаете map.get(key)
вы получите набор значений. Пожалуйста, перейдите по ссылке на Javadoc и найдите get(K key)
Object
не имеетgetKey()
Object
не имеетgetKey
илиgetId
.