JavaRush /Java Blog /Random-TL /Paano gawin ang pag-uuri ng tama sa Java
eGarmin
Antas

Paano gawin ang pag-uuri ng tama sa Java

Nai-publish sa grupo
Sa pagsusuri sa source code ng maraming opensource Java na proyekto, nalaman kong karamihan sa mga developer ay nagpapatupad ng pag-uuri sa dalawang magkaibang paraan lamang. Ang isa sa mga ito ay batay sa paggamit ng paraan ng sort()klase Collectionso Arrays, at ang isa pa ay batay sa paggamit ng mga istruktura ng data sa pag-uuri-buo ng sarili tulad ng TreeMapat TreeSet. Paano gawin ang pag-uuri ng tama sa Java - 1

Gamit ang sort() method

Kung kailangan mong pag-uri-uriin ang isang koleksyon, pagkatapos ay gamitin ang 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());
	}
});
Kung kailangan mong pag-uri-uriin ang isang array, gamitin ang 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());
	}
});
Ang pamamaraan sort()ay napaka-maginhawa kapag ang koleksyon o array ay napuno na ng mga halaga.

Paggamit ng sariling pag-uuri ng mga istruktura ng data

Kung kailangan mong pag-uri-uriin ang isang listahan ( List) o itakda ( Set), gumamit ng TreeSetistraktura ng pag-uuri.
// 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);
Kung kailangan mong pag-uri-uriin ang isang diksyunaryo ( Map), gumamit ng TreeMapistraktura ng pag-uuri. TreeMappinagsunod-sunod ayon sa susi ( 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);
Ang diskarte sa itaas ay lubhang kapaki-pakinabang sa mga kaso kung saan kailangan mong magsagawa ng malaking bilang ng mga paghahanap para sa mga elemento sa isang koleksyon. Ang mga istruktura ng data na nag-uuri-uri sa sarili ay may kahusayan O(log(n))na mas mahusay kaysa sa O(n). Nangangahulugan ito na kapag dumoble ang dami ng data sa koleksyon, hindi dumodoble ang oras ng paghahanap, ngunit tataas ng pare-parehong halaga .

Masamang diskarte sa pag-uuri ng problema

Makakahanap ka pa rin ng mga halimbawa kung saan independiyenteng inilalarawan ng mga programmer ang mga algorithm ng pag-uuri. Isaalang-alang ang sorting code na ipinakita sa ibaba (pag-uuri ng double array sa pataas na pagkakasunod-sunod ). Ang code na ito ay hindi lamang hindi mahusay, ngunit hindi rin nababasa. At mayroong maraming tulad na mga halimbawa.
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;
		}
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION