Страницы

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

воскресенье, 16 февраля 2020 г.

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

#java


Хочется странного

Есть массив объектов. У каждого объекта есть уникальное поле id. Хочется преобразовать
этот массив в HashMap с ключами, равными этим id

Да, я знаю как сделать такое через цикл. Но может есть какой более элегантный путь,
стримы, волшебные касты и т.д. о которых я просто не знаю?

class Accident{
    public int id;
    ....
}


Accidents[] accArray = getAccidentsByRetrofitAndGson();
Map accidents = new HashMap();
// Вот вместо этого?
for(Accident acc:accidents){
    accidents.put(acc.id, acc);
}

    


Ответы

Ответ 1



С помощью метода 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));

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

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