2015-08-18 2 views
8

У меня есть список объектов, которые необходимо преобразовать в карту.Как преобразовать Список объектов в карту <Объект, объект> с использованием Java 8 Lambdas

Public Class Car { 
     private Integer carId; 
     private Integer companyId; 
     private Boolean isConvertible; 
     private String carName; 
     private String color; 
     private BigDecimal wheelBase; 
     private BigDecimal clearance; 
    } 

У меня есть другой объект, который я хочу рассматривать как ключ от Карты.

public class Key<L, C, R> { 
     private L left; 
     private C center; 
     private R right; 
    } 

Я хочу создать карту из списка Авто объекты.

List<Car> cars; 
Map<Key, Car> -> This map contains Key object created from 3 field of Car object namely carId, companyId, isConvertible. 

Я не могу понять, как это сделать с помощью Java 8 Lambda

cars.stream.collect(Collectors.toMap(?, (c) -> c); 

В выше заявлении на месте?, Я хочу, чтобы создать объект Key класса, используя значения, присутствующие в токе автомобиль объект. Как я могу это достичь?

ответ

10

Вы можете сделать:

Function<Car, Key> mapper = car -> new Key(car.getId(), 
              car.getCompanyId(), 
              car.isConvertible()); 
cars.stream().collect(Collectors.toMap(mapper, Function.identity()); 
0
cars.stream().collect(Collectors.toMap(c->new Key(c.getId(),...), Function.identity()); 
0

Вы также можете попробовать это:

Map<Key, Car> carMapper = new HashMap<>(); 

    carlist.forEach(car -> carMapper.put(new Key(car.getCarId(), car.getCompanyId(), car.getIsConvertible()), car)); 
Смежные вопросы