2017-10-29 8 views
5

मैं कहाँ UserMeal है, एक List<UserMeal> संग्रह है।Collectors.toMap() keyMapper

मानचित्र की कुंजी संग्रह में UserMeal आइटम के dateTime (LocalDate में परिवर्तित) होना चाहिए।

और मानचित्र का मूल्य calories का योग होना चाहिए।

मैं इसे समझ नहीं सकता कि धाराओं के साथ इसे कैसे किया जाए। कुछ ऐसा:

items.stream().collect(Collectors.toMap(...)); 

कोई मदद?

यहां मेरा वर्तमान कोड है जो स्पष्ट रूप से काम नहीं करता है।

Map<LocalDate, Integer> values = mealList.stream() 
      .collect(Collectors.toMap(m->m.getDateTime().toLocalDate(), 
        m-> {/* HUH? */})); 

उत्तर

5

आप की जरूरत है एक अलग Collector:

Map<LocalDate, Integer> values = mealList.stream() 
     .collect(Collectors.groupingBy(
       m -> m.getDateTime().toLocalDate(), 
       Collectors.summingInt(UserMeal::getCalories))); 

या आप Collectors.toMap एक और तर्क कहता है कि प्रविष्टियों विलय करने के लिए कैसे है कि इस्तेमाल कर सकते हैं।

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