JavaRush /Java блогу /Random-KY /Java менен кантип туура сорттоо керек
eGarmin
Деңгээл

Java менен кантип туура сорттоо керек

Группада жарыяланган
Көптөгөн ачык булактуу Java долбоорлорунун баштапкы codeун талдоодо, мен көпчүлүк иштеп чыгуучулар сорттоону эки гана башка жол менен ишке ашырарын байкадым. sort()Алардын бири класс ыкмасын колдонууга негизделген Collectionsже , ал эми экинчиси жана Arraysсыяктуу өз алдынча сорттоочу маалымат структураларын колдонууга негизделген . TreeMapTreeSetJavaда кантип туура сорттоо керек - 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). Бул коллекциядагы маалыматтардын көлөмү эки эсеге көбөйгөндө, издөө убактысы эки эсеге көбөйбөйт, бирок туруктуу көлөмгө көбөйөт дегенди билдирет .

Көйгөйдү сорттоого туура эмес мамиле

Сиз дагы эле программисттер сорттоо алгоритмдерин өз алдынча сүрөттөгөн мисалдарды таба аласыз. Төмөндө берилген сорттоо codeун карап көрүңүз (кош массивди өсүү тартибинде сорттоо ) . Бул code натыйжасыз гана эмес, окууга да мүмкүн эмес. Жана мындай мисалдар көп.
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