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

265
28 февраля 2017, 15:59

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

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

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

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

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

С помощью метода forEach из Stream можно так:

Map<Integer, Accident> accidents = new HashMap<>();
Stream.of(accArray).forEach(e -> accidents.put(e.id, e));

По аналогии с вариантом из комментария @post_zeew:

Map<Integer, Accident> accidents;
accidents = Stream.of(accArray).collect(Collectors.toMap(e -> e.id, e -> e));
READ ALSO
java, функция repaint

java, функция repaint

Нарисовать сетку для тестирования монитораПо клику мыши на форме циклически менять цвета линий сетки в порядке: красный, синий, зеленый

274
Помогите разобраться с sqlite

Помогите разобраться с sqlite

Помогите разобраться с СУБД: создал коннект для подключения БД к проекту, вот мой путь "url = "jdbc:sqlite:TEST1s3db"

252
java.lang.NullPointerException

java.lang.NullPointerException

не могу понять, в чем проблема

263
Не правильно работает matcher java

Не правильно работает matcher java

Есть HTML-шаблон письма и регулярное выражение, которое работает на regex101com

318