मैं 5-मिनट अंतराल में time
विशेषता वाले ऑब्जेक्ट्स की एक सूची को समूहित करना चाहता हूं, अधिमानतः धाराओं और कलेक्टरों का उपयोग करना।धाराओं और जावा 8 का उपयोग करके विशेषता द्वारा अन्य सूचियों में किसी सूची में ऑब्जेक्ट्स को समूहित करने के लिए कैसे करें?
स्टैक ओवरव्लो पर मिले एकमात्र संभावित समाधान की गणना करना है कि मुझे कितने अंतराल (sublists) की आवश्यकता है, इन ऑब्जेक्ट्स में से प्रत्येक को प्रत्येक ऑब्जेक्ट जोड़ें और उन सभी को फ़िल्टर करें जो संबंधित समय सीमा में फिट नहीं हैं, जो बिल्कुल नहीं है एक अच्छा समाधान
मैं यह करने के लिए कुछ इसी तरह के बारे में सोचा:
List<MyObject> list = new ArrayList<MyObject>();
.......
List<List<MyObject>> grouped = list.stream().collect(Collectors.groupingBy(obj -> obj.getTime()/intervalLength));
बेशक यह doenst काम:
(How to group elements of a List by elements of another in Java 8 आप थ्रेड यहां पा सकते हैं)।
मुझे आशा है कि, जावा 8 & के साथ इसकी विशेषताओं का उपयोग अधिक से अधिक किया जा रहा है, हम ऐसी समस्या के लिए एक सूटिंग समाधान पा सकते हैं।
सादर, Claas एम
संपादित करें: अंत में, मैं @Harsh पोद्दार के समाधान का इस्तेमाल किया और का उपयोग कर
for(Map.Entry<Integer, List<MyObject>> entry:map.entrySet())
list.add(entry.getValue());
नोट सूचियाँ की एक सूची में मानचित्र परिवर्तित: सूची पड़ा बाद में सॉर्ट किया जाना चाहिए।
यह काम करता है, धन्यवाद! –