Страницы

Поиск по вопросам

пятница, 26 апреля 2019 г.

Преобразовать массив объектов в HashMap

Хочется странного
Есть массив объектов. У каждого объекта есть уникальное поле id. Хочется преобразовать этот массив в HashMap с ключами, равными этим id
Да, я знаю как сделать такое через цикл. Но может есть какой более элегантный путь, стримы, волшебные касты и т.д. о которых я просто не знаю?
class Accident{ public int id; .... }
Accidents[] accArray = getAccidentsByRetrofitAndGson(); Map accidents = new HashMap(); // Вот вместо этого? for(Accident acc:accidents){ accidents.put(acc.id, acc); }


Ответ

С помощью метода forEach из Stream можно так:
Map accidents = new HashMap<>(); Stream.of(accArray).forEach(e -> accidents.put(e.id, e));

По аналогии с вариантом из комментария @post_zeew:
Map accidents; accidents = Stream.of(accArray).collect(Collectors.toMap(e -> e.id, e -> e));

Комментариев нет:

Отправить комментарий