Индивидуальная карта с потоками Java
Возникли небольшие проблемы с использованием Stream API для сопоставления один к одному. По сути, скажем, у вас есть класс.
public class Item {
private final String uuid;
private Item(String uuid) {
this.uuid = uuid;
}
/**
* @return universally unique identifier
*/
public String getUuid() {
return uuid;
}
}
Я хотел быMap<String, Item>
для легкого поиска. Но учитываяStream<Item>
не кажется простым способом прийти к этомуMap<String, Item>
.
Очевидно, чтоMap<String, List<Item>>
не вещь
public static Map<String, List<Item>> streamToOneToMany(Stream<Item> itemStream) {
return itemStream.collect(groupingBy(Item::getUuid));
}
Это более безопасный более общий случай, но мыделать знать в этой ситуации, что будет только один на один. Я не могу найти ничего, что компилируется, хотя - я специально пытался гадить сdownstream
параметр дляCollectors.groupingBy
, Что-то вроде:
// DOESN'T COMPILE
public static Map<String, Item> streamToOneToOne(Stream<Item> itemStream) {
return itemStream.collect(groupingBy(Item::getUuid, Function.identity()));
}
Что мне не хватает?