Я думаю, что вместо сортировки по типу, вы ищете термин индексации по типу. Guava Multimap интерфейс предназначен для отображения ключей на несколько значений без всяких хлопот по работе с коллекциями значений.В частности, в Guava есть метод, предназначенный для выполнения именно того, что вы пытаетесь сделать:
List<Document> documents = ...
ImmutableListMultimap<Type, Document> typeIndex = Multimaps.index(documents,
new Function<Document, Type>() {
public Type apply(Document input) {
return input.getType();
}
});
for(Type type : typeIndex.keySet()) {
ImmutableList<Document> documentsWithType = typeIndex.get(type);
...
}
Это почти то же самое, что и:Полученная мультикарта является неизменной.Также обратите внимание, что приведенное выше почти в точности соответствует примеру Марка.