2015-08-18 32 views
8

Mam listę obiektów, które mówią, że samochód musi zostać przekonwertowany na mapę.Jak przekonwertować listę obiektów na mapę <obiekt, obiekt> używając 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; 
    } 

Mam inny obiekt, który chcę traktować jako klucz mapy.

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

Chcę utworzyć mapę z listy obiektów samochodów.

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

jestem w stanie dowiedzieć się, jak to zrobić przy użyciu Java 8 Lambda

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

W powyższym stwierdzeniu, zamiast?, Chcę utworzyć obiektu Key klasy przy użyciu wartości znajdujących się w prądzie obiekt samochodowy. Jak mogę to osiągnąć?

Odpowiedz

10

można zrobić:

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

Możesz też spróbować:

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

    carlist.forEach(car -> carMapper.put(new Key(car.getCarId(), car.getCompanyId(), car.getIsConvertible()), car)); 
Powiązane problemy