2016-03-30 8 views
7

मैं Collectors.toMap कॉल का उपयोग कर किसी मानचित्र को सूची में कनवर्ट करने का प्रयास कर रहा हूं। सूची में ActivityReconcile ऑब्जेक्ट्स शामिल हैं। मैं सूची में प्रत्येक प्रविष्टि के लिए toMap कॉल में एक उदाहरण पास करना चाहता हूं।जावा 8 परिवर्तन सूची के उदाहरण का उपयोग करके मानचित्र में परिवर्तन

कोड नीचे है और जहां मुझे उदाहरणों की आवश्यकता है, द्वारा दर्शाया गया है ??

final List<ActivityReconcile> activePostedList = loader.loadActivePosted(accessToken); 
Map<AccountTransactionKey, ActivityReconcile> postedActiveMap = 
activePostedList.stream().collect(
Collectors.toMap(
AccountTransactionKey.createNewAccountTransactionKeyFromActivityReconcileRecord(??),??)); 
+0

प्रश्न * मुझे * अस्पष्ट है। क्या आप कृपया निर्दिष्ट करना चाहते हैं? –

+1

मानचित्र दो तर्क लेता है: कुंजी और मूल्य। तो, अनुमानित आउटपुट मानचित्र की कुंजी और मूल्य क्या है? –

+1

'toMap (फंक्शन keyMapper, फंक्शन valueMapper) 'इस विधि में दो तर्क होते हैं। आप कुंजी और/या मूल्यों को निर्धारित करने का प्रस्ताव कैसे देते हैं? मैन, उस विधि का नाम देखें! 'createNewAccountTransactionKeyFromActivityReconcileRecord' –

उत्तर

4

अगर मैं तुम्हें सही ढंग से समझ में आया, आप की तरह

Map<AccountTransactionKey, ActivityReconcile> result = choices 
       .stream() 
       .collect(Collectors.toMap(
         AccountTransactionKey::generate, 
         Function.identity())); 

और विधि कुछ (AccountTransactionKey कक्षा में) की आवश्यकता होगी की तरह

public static AccountTransactionKey generate(ActivityReconcile reconcile) {...} 

मैं बदल दिया है दिखेगा उत्तर को और अधिक पठनीय और समझने योग्य बनाने के लिए createNewAccountTransactionKeyFromActivityReconcileRecgenerate द्वारा।

3

जोड़ने कम से कम परिवर्तन के साथ अपने कोड "ठीक" करने के लिए, एक लैम्ब्डा पैरामीटर:

activePostedList.stream().collect(Collectors.toMap(
    ar -> AccountTransactionKey.createNewAccountTransactionKeyFromActivityReconcileRecord(ar)), 
    o -> o)); 

या एक विधि संदर्भ का उपयोग करें: btw

activePostedList.stream().collect(Collectors.toMap(
    AccountTransactionKey::createNewAccountTransactionKeyFromActivityReconcileRecord, o -> o)); 

, मैं कभी भी एक देखकर याद नहीं आ रहा createNewAccountTransactionKeyFromActivityReconcileRecord तक विधि का नाम - पठनीयता के लिए, इसे create() पर कम करने पर विचार करें, क्योंकि रिटर्न प्रकार और पैरामीटर प्रकार आपके पास अन्य फैक्ट्री विधियों से अलग होने के लिए पर्याप्त हैं।

संबंधित मुद्दे