2015-08-18 19 views
8

Nesnelerin Listesi, Harita'ya dönüştürülmesi gereken Araç olduğunu söylüyor.Nesne Listesini <Nesne, Nesne> 'ye dönüştürmek için nasıl kullanılır? 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; 
    } 

Harita'nın anahtarı olarak ele almak istediğim başka bir nesnem var.

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

Araç Listesi nesnesinden bir harita oluşturmak istiyorum. Ben yerine, yukarıdaki açıklamada bu kullanarak Java 8 Lambda'ya

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

nasıl? Anlamaya alamıyorum

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

, ben akımın mevcut değerleri kullanarak Anahtar sınıfın nesnesi oluşturmak istiyoruz araba nesnesi. Bunu nasıl başarabilirim?

cevap

10

Sen yapabilirsiniz:

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

Ayrıca bu deneyebilirsiniz:

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

    carlist.forEach(car -> carMapper.put(new Key(car.getCarId(), car.getCompanyId(), car.getIsConvertible()), car)); 
İlgili konular