2012-06-01 17 views
41

मैं एक संपत्ति द्वारा ArrayList सॉर्ट करना चाहता हूं। यह मेरा कोड है ...गुणों द्वारा एंड्रॉइड सॉर्ट सरणीसूची

public class FishDB{ 

    public static Object Fish; 
    public ArrayList<Fish> list = new ArrayList<Fish>(); 

    public class Fish{ 
     String name; 
     int length; 
     String LatinName; 
     //etc. 

     public Vis (String name) { 
      this.name = name; 
     } 
    } 

    public FishDB() { 
     Fish fish; 

     fish = new Fish("Shark"); 
     fish.length = 200; 
     fish.LatinName = "Carcharodon Carcharias"; 

     fish = new Fish("Rainbow Trout"); 
     fish.length = 80; 
     fish.LatinName = "Oncorhynchus Mykiss"; 

     //etc. 
     } 
    } 
} 

अब मैं एक संपत्ति किसी अन्य गतिविधि में latinname e.g द्वारा इस ArrayList क्रमबद्ध करना चाहते हैं में चाहते हैं। लेकिन मुझे नहीं पता कि यह कैसे करना है। क्या कोई जानता है कि कैसे?

+0

'Collections.sort (arrayList) आज़माएं;' – Lucifer

+0

@ लुसीफर यदि आप ऐसा करते हैं, तो आपके arra का सामान्य प्रकार yList को java.lang.Comparable –

उत्तर

115

आप एक Comparator लागू करने की आवश्यकता उदाहरण के लिए:

public class FishNameComparator implements Comparator<Fish> 
{ 
    public int compare(Fish left, Fish right) { 
     return left.name.compareTo(right.name); 
    } 
} 

और उसके बाद इस तरह यह क्रमबद्ध करें:

Collections.sort(fishes, new FishNameComparator()); 
+0

लागू करना चाहिए धन्यवाद, लेकिन मुझे अभी भी एक समस्या है। मैं एक गतिविधि में सरणी सूची को सॉर्ट करना चाहता हूं। शुरुआत में खड़ा है: पब्लिक क्लास फिशलिस्ट लिस्ट एक्टिविटी { और जब मैं लिखता हूं तो सार्वजनिक वर्ग फिशनाम कॉम्पैपरेटर कंप्रेसर { लागू करता है यह दो त्रुटियों को कहता है: स्थानीय वर्ग FishNameComparator के लिए अवैध संशोधक; केवल सार या अंतिम अनुमति है। और: प्रकार FishNameComparator विरासत अमूर्त विधि तुलनाकर्ता को लागू करना चाहिए तुलनात्मक .compare (स्ट्रिंग, स्ट्रिंग)। मैंने अभी आपके जवाब में क्या खड़ा किया है। – Simon

+2

@ user1380611: यदि आप इसे नेस्टेड क्लास के रूप में कार्यान्वित कर रहे हैं, तो इसे 'स्थिर वर्ग' होना चाहिए। और मैंने अपना उदाहरण गड़बड़ कर दिया, इसे 'कंप्रेसर ' लागू किया जाना चाहिए। –

+0

मेरे लिए पूरी तरह से काम करता है। यहां आरोही क्रम में प्रकार। –

40

आप बस यह कर सकते हैं कर सकते हैं इस प्रकार है:

Collections.sort(list, new Comparator<Fish>() { 
    public int compare(Fish o1, Fish o2) { 
     return o1.name.compareTo(o2.name); 
    } 
}); 
+0

पहले से ही कहा गया है और के-बेलो – Simon

+7

हाँ द्वारा जवाब स्वीकार किया गया है लेकिन उसने इसे एक और अधिक सुलभ प्रारूप में रखा है। –

+1

यह एक बहुत बेहतर है! –