不废话了 , 直接给大家贴代码了。
Classe termo {string str; int id; public termo (string str, int id) {this.str = str; this.id = id; } public string tostring () {return str+""+id; }} classe Sterm implementos comparáveis {string str; int id; public sherm (string str, int id) {this.str = str; this.id = id; } public int compareto (objeto o) {return ((sterm) o) .id - id; } public string tostring () {return str+""+id; }} // Método1: A classe explícita do comparador TermComparator implementa o comparador {public int compare (objeto O1, objeto O2) {return ((termo) o1) .id - ((termo) o2) .id; }} classe pública t1 { / ** * @param args * / public static void main (string [] args) {// TODO Auto-Generated Method Stub // ArrayList <Teger> ARR = new ArrayList <Teger> (Arrays. aslist (3,1,3,7,8,0)); // // collects.sort (arr, new comparator () {// // public int compare (objeto o1, objeto o2) {// retorna new Double ((inteiro) o1) .compareto (novo duplo ((inteiro) O2)); // Method1 List <Merm> ls = new ArrayList <Merm> (); LS.Add (novo termo ("A", 1)); LS.Add (novo termo ("B", 5)); LS.Add (novo termo ("C", 2)); LS.Add (novo termo ("D", 2)); LS.Add (novo termo ("e", 3)); ls.add (novo termo ("f", 0)); Coleções.sort (LS, new TermComParator ()); System.out.println (ls); // [f 0, A 1, C 2, D 2, E 3, B 5] // Method2: Collection.Sort de implementos anônimos.Sort (LS, New Comparator () {public Int Compare (Objeto O1, objeto O2) {return ((termo) o2) .id - (termo) o1) .id; System.out.println (ls); // [b 5, e 3, c 2, d2, a 1, f 0] // método3: instanciado um comparador de modelo comparador <merm> terminCmp = novo comparador <merm> ( ) {public int compare (termo t1, termo t2) {return t1.id - t2.id; }}; Coleções.Sort (LS, TermCMP); System.out.println (ls); // [f 0, A 1, C 2, D 2, E 3, B 5] // Método4: O elemento implementa a lista comparável <Sterm> lsS = new ArrayList <Sterm> () ; lss.add (novo estermador ("A", 1)); lss.add (novo estermador ("b", 5)); lss.add (novo estermador ("c", 2)); lss.add (novo estermador ("d", 2)); lss.add (novo estermador ("e", 3)); lss.add (new sterm ("f", 0)); Coleções.sort (LSS); System.out.println (lss); // [b 5, e 3, c 2, d 2, a 1, f 0]}}Prioriyqueue 的用法和上述的排序类似 , 有三种方法:
class Wordfreq implementa comparável {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 Method Auto-Gerated Stub PriorityQueue <dordfreq> pq = new priorityQueue <dordfreq> (); pq.offer (new wordfreq ("aaa", 3)); pq.offer (new wordfreq ("bbb", 4)); pq.offer (new wordfreq ("ccc", 1)); while (pq.peek ()! = null) {System.out.println (pq.poll ()); } // 从大到小输出}}注意 ,
for (wordfreq wf: pq) {System.out.println (wf);}并不保证遍历的有序
如果 Lista <String> LS 进行排序的话 , 不需要写 Comparador, 因为 String 本身有 Compareto 的实现。