不废话了 , 直接给大家贴代码了。 直接给大家贴代码了。
Klassenbegriff {String str; int id; public Term (String str, int id) {this.str = str; this.id = id; } public String toString () {return str+""+id; }} Klasse Strem implementiert vergleichbar {String str; int id; public sterm (string str, int id) {this.str = str; this.id = id; } public int vergleicheto (Objekt o) {return ((sterm) o) .id - id; } public String toString () {return str+""+id; }} // method1: Explizit implementiert Vergleicherklassenklassen TermComparator implementiert CompueS {public int compare (Objekt O1, Objekt O2) {return ((Term) O1) .ID - (Term) O2) .Id; }} public class t1 { / ** * @param args * / public static void main (String [] args) {// Todo auto-generierter Methode Stub // ArrayList <Integer> arr = new ArrayList <Gefeger> (Arrays. ASLIST (3,1,3,7,8,0)); // // Collections.sort (arr, neuer vergleicher () {// // public int compare (Objekt O1, Objekt O2) {// Neues Double zurückgeben ((Integer) O1) .Compareto (neues Double ((Ganzzahl)) O2)); // method1 list <term> ls = new ArrayList <term> (); Ls.Add (neuer Begriff ("a", 1)); Ls.Add (neuer Begriff ("B", 5)); Ls.Add (neuer Begriff ("C", 2)); Ls.Add (neuer Begriff ("D", 2)); Ls.Add (neuer Begriff ("E", 3)); Ls.Add (neuer Begriff ("f", 0)); Collections.sort (ls, neuer BegriffComparator ()); System.out.println (ls); // [f 0, a 1, c 2, d 2, e 3, b 5] // method2: anonyme implementiert collectionss.sort (ls, neuer vergleicher () {public int Compare (Objekt O1, Objekt O2) {return ((Term) O2) .ID - (Term) O1) .ID; System.out.println (ls); // [b 5, e 3, c 2, d 2, a 1, f 0] // methode3: Instanziellen Vergleiche für Vergleiche -Vorlagen <term> termcmp = neuer Vergleicher <term> (Term> (Term> (Term> (Term> (Term> (Term> (Term> "(Begriff> (Term> (Term> (Begriff) (Befriedigung) () (Begriff> ( ) {public int compare (Term T1, Begriff t2) {return t1.id - t2.id; }}; Collections.sort (ls, termcmp); System.out.println (ls); // [f 0, a 1, c 2, d 2, e 3, b 5] // method4: Element implementiert eine vergleichbare Liste <Sostm> lss ; LSS.Add (neues Strem ("a", 1)); LSS.Add (neues Strem ("B", 5)); LSS.Add (neues Strem ("C", 2)); LSS.Add (neues Sterm ("D", 2)); LSS.Add (neues Strem ("E", 3)); LSS.Add (neues Strem ("F", 0)); Sammlung.Sort (LSS); System.out.println (LSS); // [b 5, e 3, c 2, d 2, a 1, f 0]}}}}Prioriyqueue 的用法和上述的排序类似 , : :
Klasse WordFreq implementiert vergleichbar {public String wd; public int freq; public WordFreq (String wd, int freq) {this.wd = wd; this.freq = freq; } public int vergleicheto (Objekt o) {return ((WordFreq) o) .Freq - freq; } public String toString () {return wd+""+freq; }} public class testt {public static void main (String [] args) {// Todo automatisch generierte Methode Stub PriorityQueue <Wordfreq> pq = new PriorityQueue <Wordfreq> (); pq.offer (neuer WordFreq ("AAA", 3)); pq.offer (neuer WordFreq ("BBB", 4)); PQ.Offer (New WordFreq ("CCC", 1)); while (pq.peek ()! = null) {System.out.println (pq.poll ()); } // 从大到小输出}}注意 ,
für (WordFreq WF: pq) {System.out.println (WF);}并不保证遍历的有序
如果 LIST <string> ls 进行排序的话 , 不需要写 Vergleicher, 因为 String 本身有 Vergleiche 的实现。