不废话了、直接给大家贴代码了。
クラス用語{string str; int id; public Term(string str、int id){this.str = str; this.id = id; } public string toString(){return str+""+id; }} class stermは同等の{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; }} // Method1:明示的な実装Comparator Comparator Class TermComparator Implements Comparator {public int Compare(Object o1、object o2){return(((項)o1).id - ((ターム)o2).id; }} public class t1 { / ** * @param args * / public static void main(string [] args){// dodo auto-enerated method stub // arraylist <integer> arr = new arraylist <integer>(arrays。 ASLIST(3,1,3,7,8,0)); // // collections.sort(arr、new Comparator(){// // public int compare(object o1、object o2){// new double((integer)o1).compareto(new double((integer))return o2)); //}); // method1 list <term> ls = new arraylist <term>(); ls.Add(新しい用語( "a"、1)); ls.Add(新しい用語( "B"、5)); ls.Add(新しい用語( "c"、2)); ls.Add(新しい用語( "d"、2)); ls.Add(新しい用語( "e"、3)); ls.Add(新しい用語( "f"、0)); collections.sort(ls、new TermComparator()); System.out.println(ls); // [f 0、a 1、c 2、d 2、e 3、b 5] // method2:anonymous emplments collections.sort(ls、new Comparator(){public int compare (オブジェクトO1、オブジェクトO2){return((ターム)o2).id - ((ターム)o1).id}}; System.out.println(ls); // [b 5、e 3、c 2、d 2、a 1、f 0] // method3:コンパレータテンプレートコンパレータ<term>ターム>ターム= new Comparator <term>( ){public int Compare(Term T1、Term 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:要素実装<sterm> lss = new arraylist <sterm>() ; lss.add(new Sterm( "a"、1)); lss.add(new Sterm( "B"、5)); lss.add(new Sterm( "c"、2)); lss.add(new Sterm( "d"、2)); lss.add(new Sterm( "e"、3)); lss.add(new Sterm( "f"、0)); collections.sort(lss); System.out.println(lss); // [b 5、e 3、c 2、d 2、a 1、f 0]}}}prioriyqueue的用法和上述的排序类似、有三种方法:
クラスwordfreqを実装します{public string wd; Public Int Freq; public wordfreq(string wd、int freq){this.wd = wd; this.freq = freq; } public int compareto(object o){return((wordfreq)o).freq -freq; } public string toString(){return wd+""+freq; }} public class testt {public static void main(string [] args){// todo auto-feenated method stub priorityqueue <wordfreq> pq = new priorityqueue <wordfreq>(); 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);}并不保证遍历的有序
如果リスト<文字列> ls进行排序的话、不需要写比較、因为文字列本身有比較的实现。