java - Grouping a ArrayList<HashMap> according to a value, and adding another value with respect to the sorted key -
मेरे पास एक ArrayList & gt; & gt; जो कुछ प्रमुख मूल्य प्रविष्टियां रखता है जैसे: -
अर्रेलिस्ट & lt; हैशमैप & lt; स्ट्रिंग, स्ट्रिंग & gt; & gt; एमएलआईआईएस = नए अर्रेइस्ट & लेफ्टिनेंट; हैशमैप & lt; स्ट्रिंग, स्ट्रिंग & gt; & gt; (); HashMap & LT; स्ट्रिंग, स्ट्रिंग & gt; नक्शा = नया हैशमैप & lt; स्ट्रिंग, स्ट्रिंग & gt; (); map.put ("NewId", newId); Map.put ("शीर्षक", शीर्षक); Map.put ("विवरण", वर्णन); mList.add (नक्शा); माईलिस्ट myList = नया मैलिस्ट (एमएलआईएसटी); ItemsAdapter = नया आलसी एडाप्टर (myContext, myList); newList.setAdapter (itemsAdapter); "नई आयडी" कई प्रविष्टियों के समान हो सकती है।
इसके अलावा मेरे पास रंगों का एक सरणी है: -
स्ट्रिंग [] रंग = नया स्ट्रिंग [] {"# 1 एफ 1 ए 17", "# 62934 डी", "# एफ 9 बी 0 एफ", "# 7959 बीसी", "# 74 बी 8 डीई", "# ई65641", "# 7 सीसीसी 8 बीबी", "# डी 7 सीई 5 डी", "# डी 6 बीई 95 "," # बी 694 डी 1 "}; मुझे एक ही "न्यूआईडी" के साथ सभी प्रविष्टियों के साथ एक म्यू ग्रुप चाहिए और उनको पहला रंग, दूसरे रंगों के साथ दूसरी प्रविष्टियां और दूसरे रंग के साथ अन्य मदों तक पहले 10 के साथ "न्यूआईडी" को अपने संबंधित रंगों के साथ सौंपा गया।
उदाहरण: - समूहिंग से पहले
नया शीर्षक शीर्षक विवरण 101 शीर्षक 1 des1 102 title2 des2 103 शीर्षक 3 des3 101 title4 Des4 102 शीर्षक 5 des5 103 शीर्षक 6 des6 समूह के बाद, <पूर्व> नया शीर्षक शीर्षक विवरण 101 शीर्षक 1 des1 ------ & gt; रंग 1 101 शीर्षक 4 des4 ------ & gt; रंग 1 102 शीर्षक 2 डीएस 2 ------ & gt; रंग 2 102 शीर्षक 5 डेस 5 ------ & gt; रंग 2 103 शीर्षक 3 डेस 3 ------ & gt; रंग 3 103 शीर्षक 6 डीएस 6 ------ & gt; रंग 3 मैंने अभी तक क्या किया है: -
सार्वजनिक वर्ग MyList {निजी ऐरे लिस्ट & लेफ्टिनेंट; हैशमैप & lt; स्ट्रिंग, स्ट्रिंग & gt; & gt; सूची = नया अर्रेलिस्ट & lt; & gt; (); सार्वजनिक मैललिस्ट (ऐरेलिस्ट एंड लेफ्टिनेंट; हैशमैप & lt; स्ट्रिंग, स्ट्रिंग & gt; मेरी सूची) {this.list = mylist; } सार्वजनिक बूलियन जोड़ें (हैशमैप & lt; स्ट्रिंग, स्ट्रिंग & gt; नक्शे) {return list.add (नक्शा); } सार्वजनिक शून्य सेट कॉलर (स्ट्रिंग न्यूआईडी, स्ट्रिंग रंग) {for (हैशमैप & lt; स्ट्रिंग, स्ट्रिंग & gt; m: सूची) अगर (m.containsKey (newId)) m.put ("color", रंग); } सार्वजनिक स्ट्रिंग getGroupKey (स्ट्रिंग कुंजी, इंट आई) {ArrayList & lt; स्ट्रिंग & gt; uniqeList = getUniqKeyList (कुंजी); Collections.sort (uniqeList); वापसी uniqeList.get (i); } सार्वजनिक अर्रे लिस्ट & lt; स्ट्रिंग & gt; GetUniqKeyList (स्ट्रिंग कुंजी) {ArrayList & lt; स्ट्रिंग & gt; एल = नया अर्रेलिस्ट & lt; & gt; (); (हाशमैप के लिए; स्ट्रिंग, स्ट्रिंग & gt; m: सूची) यदि (! l.contains (m.get (कुंजी))) l.add (m.get (कुंजी)); रिटर्न एल; }} सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] args) अपवाद फेंकता {MyList myList = new MyList (); HashMap & LT; स्ट्रिंग, स्ट्रिंग & gt; नक्शा = नया हैशमैप & lt; स्ट्रिंग, स्ट्रिंग & gt; (); map.put ("NewId", newId); map.put ("शीर्षक", शीर्षक); map.put ("विवरण", वर्णन); myList.add (नक्शा); स्ट्रिंग [] रंग = नया स्ट्रिंग [] {"# 1 एफ 1 ए 17", "# 62934 डी", "# बीएल 4 4 9 1"}; Int i = 0; जबकि (सच) {अगर (मैं == colors.length) तोड़; स्ट्रिंग s = myList.getGroupKey ("NewId", i); अगर (एस == रिक्त) तोड़; अन्य myList.setColor (एस, रंग [i ++]); }} आइटम एडेप्टर = नया आलसी एडाप्टर (myContext, myList); लेकिन मुझे एक त्रुटि मिलती है: -
04-24 04: 57: 49.9 9 3: ई / एंड्रॉइड रेंटमैन (1882): इसके कारण: java.lang .IndexOutOfBoundsException: अमान्य सूचकांक 4, आकार है 4 अप्रैल 04-24: 57: 49.993: ई / AndroidRuntime (1882): java.util.ArrayList.throwIndexOutOfBoundsException (ArrayList.java:251) में 04-24 अप्रैल: 57: 49.993: ई / AndroidRuntime (1882): पर java.util.ArrayList.get (ArrayList.java:304) 04-24 अप्रैल: 57: 49.993: ई / AndroidRuntime (1882): Utility.MyList.getGroupKey (कम से MyList.java:58 )
कोशिश ... जबकि (सच) {if (i & gt ; = Colors.length) ब्रेक; स्ट्रिंग s = myList.getGroupKey ("NewId", i); अगर (एस == रिक्त) तोड़; अन्य myList.setColor (एस, रंग [i ++]); }
Comments
Post a Comment