ڪيترن ئي اوپن سورس جاوا پروجيڪٽس جي سورس ڪوڊ جو تجزيو ڪندي، مون ڏٺو ته اڪثر ڊولپرز ترتيب ڏيڻ کي صرف ٻن مختلف طريقن سان لاڳو ڪندا آهن.
sort()
انهن مان هڪ طبقن جي طريقي جي استعمال تي ٻڌل آهي Collections
يا Arrays
، ۽ ٻيو خود ترتيب ڏيڻ واري ڊيٽا جي جوڙجڪ جي استعمال تي ٻڌل آهي جهڙوڪ TreeMap
۽ TreeSet
.
استعمال ڪندي ترتيب () طريقو
جيڪڏهن توهان کي مجموعو ترتيب ڏيڻ جي ضرورت آهي، پوء استعمال ڪريوCollections.sort()
.
// Collections.sort(…)
List<ObjectName> list = new ArrayList<ObjectName>();
Collections.sort(list, new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
جيڪڏهن توهان کي هڪ صف ترتيب ڏيڻ جي ضرورت آهي، استعمال ڪريو Arrays.sort()
.
// Arrays.sort(…)
ObjectName[] arr = new ObjectName[10];
Arrays.sort(arr, new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
اهو طريقو sort()
تمام آسان آهي جڏهن گڏ ڪرڻ يا صف اڳ ۾ ئي قدرن سان ڀريل آهي.
خود ترتيب ڏيڻ واري ڊيٽا جي جوڙجڪ کي استعمال ڪندي
جيڪڏھن توھان کي ضرورت آھي ھڪڙي فهرست کي ترتيب ڏيو (List
) يا سيٽ ڪريو ( Set
)، ھڪڙي TreeSet
ترتيب واري جوڙجڪ استعمال ڪريو.
// TreeSet
Set<ObjectName> sortedSet = new TreeSet<ObjectName>(new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
sortedSet.addAll(unsortedSet);
جيڪڏهن توهان کي لغت ترتيب ڏيڻ جي ضرورت آهي ( Map
)، TreeMap
ترتيب ڏيڻ واري جوڙجڪ استعمال ڪريو. TreeMap
چاٻي جي ترتيب سان ترتيب ڏنل ( key
).
// TreeMap – использующий String ключи и компаратор (Comparator) CASE_INSENSITIVE_ORDER,
// упорядочивающий строки (String) методом compareToIgnoreCase
Map<String, Integer> sortedMap = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
sortedMap.putAll(unsortedMap);
//TreeMap – общий случай, компаратор указывается вручную
Map<ObjectName, String> sortedMap = new TreeMap<ObjectName, String>(new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
sortedMap.putAll(unsortedMap);
مٿين طريقي سان ڪيسن ۾ تمام ڪارائتو آهي جتي توهان کي مجموعي ۾ عناصر لاء وڏي تعداد ۾ ڳولا ڪرڻ جي ضرورت آهي. خود ترتيب ڏيڻ واري ڊيٽا جي جوڙجڪ ۾ هڪ ڪارڪردگي آهي O(log(n))
جيڪا بهتر آهي O(n)
. هن جو مطلب اهو آهي ته جڏهن گڏ ڪيل ڊيٽا جي مقدار کي ٻيڻو ڪري ٿو، ڳولا جو وقت ٻيڻو نه ٿو، پر مسلسل مقدار سان وڌي ٿو .
مسئلي کي ترتيب ڏيڻ لاء خراب طريقو
توھان اڃا تائين مثال ڳولي سگھو ٿا جتي پروگرامر آزاد طور تي الگورتھم کي ترتيب ڏيڻ جي وضاحت ڪن ٿا. هيٺ ڏنل ترتيب ڏيڻ واري ڪوڊ تي غور ڪريو (اڀرندي آرڊر ۾ ڊبل صف کي ترتيب ڏيڻ ). هي ڪوڊ نه رڳو غير موثر آهي، پر اڻ پڙهيل پڻ. ۽ اهڙا ڪيترائي مثال آهن.double t;
for (int i = 0; i < N; i++)
for (int j = i + 1; j < N; j++)
if (r[j] < r[i]) {
t = r[i];
r[i] = r[j];
r[j] = t;
}
GO TO FULL VERSION