मान लीजिए कि मेरे पास अंतराल की सूची है (प्रारंभ से क्रमबद्ध) और मैं उन्हें तोड़ना चाहता हूं ताकि मेरे पास अंतराल के ओवरलैपिंग समूहों की सूची हो। तो, उदाहरण के लिए, साथ Interval
के रूप में:पिछली तत्वों से संबंधित स्थिति में समूहों में जावा 8 विभाजन सूची
public class Interval {
private final int start;
private final int end;
public Interval(int start,int end){
this.start = start;
this.end = end;
}
public int getStart(){return start;}
public int getEnd(){return end;}
public String toString(){ return "("+start+","+end+")"; }
}
और एक List<Interval>
की तरह:
[(0,4),(1,7),(6,10),(13,17),(20,100),(22,31),(60,65)]
मैं List<List<Interval>>
का उत्पादन करना चाहते हैं:
[[(0,4),(1,7),(6,10)],[(13,17)],[(20,100),(22,31),(60,65)]]
मैं इस अप कोड कर सकते हैं, लेकिन मैं मैं वास्तव में जावा 8 के अधिक कार्यात्मक दृष्टिकोण का आनंद ले रहा हूं, और जानना चाहता हूं कि जावा 8 स्ट्रीम का उपयोग करके ऐसा करने के लिए एक बेवकूफ तरीका है या नहीं।
मैंने Collectors प्रदान की गई "समूह द्वारा" शैलियों पर एक नज़र डाली है, लेकिन वे लागू नहीं होते हैं क्योंकि मैं वास्तव में क्लासिफायर द्वारा समूहबद्ध नहीं कर रहा हूं- आप केवल समूह पर आधारित समूहों की गणना नहीं कर सकते प्रत्येक व्यक्तिगत तत्व की एक संपत्ति, आपको अब तक गणना की गई समूहों के संबंध में प्रत्येक तत्व के गुणों पर विचार करना होगा।
निश्चित रूप से कार्यात्मक भाषाओं में ऐसा करने के लिए गैर-पागल तरीका है (हालांकि मैं किसी ऐसे व्यक्ति के रूप में बोलता हूं जो वास्तव में एक कार्यात्मक प्रोग्रामर नहीं है :-))। जावा 8 में धाराओं के साथ मैं इसे कैसे कर सकता हूं?
मुझे लगता है, 'this.start = end;' वह नहीं है जो आप चाहते हैं। लेकिन यह एक अच्छी बात है कि आप 'अंतिम' चर का उपयोग कर रहे हैं, इसलिए त्रुटि तुरंत कंपाइलर द्वारा स्पॉट की जाती है। – Holger
वैसे, आउटपुट क्या होना चाहिए जब इनपुट निम्न है: '[(60, 65), (22, 31), (20, 100)]'? क्या सभी तीन अंतराल एक साथ विलय हो जाना चाहिए? दूसरे शब्दों में, इनपुट अंतराल का क्रम परिणाम बदल सकता है? –
@ टगीर वैलेव: प्रश्न की पूर्व शर्त (पहली वाक्य में) यह है कि तत्वों को उनके प्रारंभ बिंदु से क्रमबद्ध किया जाता है। किसी भी समाधान के लिए सॉर्टिंग चरण तैयार करके उस आवश्यकता को आराम करना आसान है। – Holger