Я использовал превосходный шаблон Джошуа Блоха для создания поисков от строк (или других типов) до объектов перечисления. После создания объектов перечисления нам нужно создать карту как:
private static final Map<String, MyEnumType> MY_MAP =
Stream.of(values())
.collect(toMap(MyEnumType::myFunction, e -> e));
где myFunction
возвращает строку, которую я хочу отобразить. Затем мы создаем статический метод, который использует карту для поиска объектов по ключу.
Это хорошо работает, но теперь у меня есть требование отобразить каждый объект перечисления из нескольких строк.
Я обновил myFunction для возврата List<String>
. Теперь я хочу, чтобы мой поток перебирал список, вставляя в карту объекты e
, но я не могу понять, как именно.
Мне кажется, проблема в том, что если я создаю поток, я теряю объект e
для вставки.
Обновление: Похоже, есть некоторая путаница в отношении того, что я прошу сделать. У меня есть два рабочих ответа (поэтому я счастлив), но я добавлю пример, который может помочь любому, кто хочет решить ту же проблему.
Рассмотрим перечисление дней недели - тип должен содержать ровно 7 объектов. Я пытаюсь написать метод поиска из текстового описания. Объект TUESDAY должен отображаться с двух разных ключей - tuesday
и tue
. Метод myFunction
вернет оба этих ключа в список
Для целей поиска мне нужно, чтобы у моего Map<String, Week>
было два ключа, указывающих на объект TUESDAY.