Когда я использую Maps.uniqueIndex с List, который содержит повторяющееся значение,гуавы Maps.uniqueIndex не допускает дубликатов
java.lang.IllegalArgumentException: duplicate key: 836
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:115)
отбрасывается.
Я нахожу это неудобным. Полагаю, что это имеет смысл, но если для корректной работы функции требуется уникальная коллекция, почему она принимает Iterable в качестве аргумента вместо Set?
List<GroupVO> groups = groupDao.getAll(groupIds);
Map<String,GroupVO> groupMap groupMap = Maps.uniqueIndex(groups, new Function<GroupVO,String>() {
public String apply(GroupVO vo) {
return vo.getId().toString();
}});
Хотелось бы, чтобы была версия этой функции, которая бы просто перезаписывала вместо того, чтобы бросать исключение. Просто снова укусил с неожиданным состоянием. Кажется, что проверка, необходимая для того, чтобы убедиться, что эта функция не случайно потерпит неудачу, более чем исключает ее преимущества (в моем случае) – Marc