不废话了 直接给大家贴代码了。 直接给大家贴代码了。
término de clase {cadena str; int id; Public Term (String Str, int id) {this.str = str; this.id = id; } public String toString () {return str+""+id; }} La clase de esterma implementa comparables {String Str; int id; Public STERM (String Str, int id) {this.str = str; this.id = id; } public int Compareto (Object o) {return ((sterm) o) .id - id; } public String toString () {return str+""+id; }} // método1: implementos explícitos de comparación de la clase TermComparator implementa comparador {public int compare (objeto o1, objeto o2) {return ((término) o1) .id - ((término) o2) .id; }} clase pública T1 { / ** * @param args * / public static void main (string [] args) {// toDo método generado automático stub // arraylist <integer> arr = new ArrayList <Integer> (matrices. Aslist (3,1,3,7,8,0)); // // colección.sort (arr, new Comparator () {// // public int Compare (Object O1, Object O2) {// return New Double ((Integer) O1) .compareto (new Double ((Integer) o2)); //} //}); // Method1 List <Merm> LS = New ArrayList <Merm> (); ls.Add (nuevo término ("a", 1)); ls.Add (nuevo término ("b", 5)); ls.Add (nuevo término ("c", 2)); ls.Add (nuevo término ("d", 2)); ls.Add (nuevo término ("e", 3)); ls.Add (nuevo término ("f", 0)); Colección.sort (ls, new TermComparator ()); System.out.println (ls); // [F 0, A 1, C 2, D 2, E 3, B 5] // Método2: Anónimo implementos colección.sort (ls, new Comparator () {Public Int Compare (Objeto o1, objeto o2) {return ((término) o2) .id - ((término) o1) .id; System.out.println (ls); // [b 5, E 3, C 2, D 2, A 1, F 0] // Método3: Instanciar un comparador de plantilla de comparación <Term> Termcmp = nuevo Comparador <Term> ((Term> ( ) {public int Compare (término t1, término t2) {return t1.id - t2.id; }}; Colección.sort (LS, TermCMP); System.out.println (ls); // [F 0, A 1, C 2, D 2, E 3, B 5] // Método4: El elemento implementa una lista comparable <sterm> lss = new ArrayList <Serm> () ; lss.add (nuevo esterma ("a", 1)); lss.add (nuevo esterma ("b", 5)); lss.add (nuevo esterma ("c", 2)); lss.add (nuevo esterma ("d", 2)); lss.add (nuevo esterma ("e", 3)); lss.add (nuevo esterma ("f", 0)); Colección.sort (LSS); System.out.println (LSS); // [B 5, E 3, C 2, D 2, A 1, F 0]}}Prioryqueue 的用法和上述的排序类似 有三种方法 : :
clase WordFreq implementa comparable {public String wd; público int freq; public WordFreq (String WD, int Freq) {this.wd = wd; this.freq = freq; } public int Compareto (objeto o) {return ((wordfreq) o) .freq - freq; } public String toString () {return wd+""+freq; }} public class testt {public static void main (string [] args) {// tODO método auto generado stub priorityqueue <WordFreq> PQ = new Priorityqueue <WordFreq> (); pq.offer (nueva WordFreq ("AAA", 3)); pq.offer (nueva WordFreq ("BBB", 4)); pq.offer (nueva WordFreq ("CCC", 1)); while (pq.peek ()! = null) {system.out.println (pq.poll ()); } // 从大到小输出}}注意 注意
for (wordfreq wf: pq) {system.out.println (wf);}并不保证遍历的有序
如果 List <String> LS 进行排序的话 , 不需要写 Comparador, 因为 String 本身有 Compareto 的实现。