2015-08-18 7 views
8

का उपयोग करके मेरे पास ऑब्जेक्ट्स की सूची है जो कार को कनवर्ट करने की आवश्यकता है।ऑब्जेक्ट्स की सूची को मानचित्र में कैसे बदलें <ऑब्जेक्ट, ऑब्जेक्ट> जावा 8 लैम्बडास

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. 

मैं के स्थान पर इस का उपयोग कर जावा 8 लैम्ब्डा

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

कैसे करना है इसके बाद के संस्करण बयान में? यह पता लगाने में असमर्थ हूँ, मैं वर्तमान में मौजूद मानों का उपयोग कुंजी वर्ग की वस्तु बनाने के लिए चाहते हैं कार वस्तु इसे कैसे प्राप्त किया जा सकता है?

उत्तर

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)); 
संबंधित मुद्दे