JavaRush /جاوا بلاگ /Random-UR /جاوا میں صحیح طریقے سے چھانٹنے کا طریقہ
eGarmin
سطح

جاوا میں صحیح طریقے سے چھانٹنے کا طریقہ

گروپ میں شائع ہوا۔
بہت سے اوپن سورس جاوا پروجیکٹس کے سورس کوڈ کا تجزیہ کرتے ہوئے، میں نے پایا کہ زیادہ تر ڈویلپر صرف دو مختلف طریقوں سے چھانٹی کو نافذ کرتے ہیں۔ sort()ان میں سے ایک کلاس کے طریقہ کار Collectionsیا کے استعمال پر مبنی ہے Arrays، اور دوسرا خود کو چھانٹنے والے ڈیٹا ڈھانچے جیسے کہ TreeMapاور کے استعمال پر مبنی ہے TreeSet۔ جاوا میں صحیح طریقے سے چھانٹنے کا طریقہ - 1

sort() طریقہ استعمال کرنا

اگر آپ کو کسی مجموعہ کو ترتیب دینے کی ضرورت ہے، تو استعمال کریں 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;
		}
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION