不废话了,直接给大家贴代码了。,直接给大家贴代码了。
班级{字符串str; int id;公共术语(String str,int ID){this.str = str; this.id = id; } public String toString(){return str+“”+id; }} class sterm insterm instable Abotable {string str; int id; public sterm(字符串str,int id){this.str = str; this.id = id; } public int comporto(object o){return((sterm)o).id -id; } public String toString(){return str+“”+id; }} //方法1:显式实现了比较类TermComparator实现了比较器{public int comparare(object o1,object o2){return((term)o1).id - id-((term)o2 o2 o2 o2 o2; id; }}} public类T1 { / ** * @param args * / public static void main(string [] args){// todo auto-generated方法stub // arraylist <integer> arr = arr = arr = new arraylist <integer>(arrays。 Aslist(3,1,3,7,8,0)); // // collections.sort(arr,new comparator(){// // public int comparare(对象O1,对象O2){//返回新double(((integer)o1).compareto(new double(integer) 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] //方法2:匿名collections.sort.sort(ls,new comparator(),public int int actarare (Object O1,Object O2){返回((术语)O2).id - ((term)O1).id;}}); system.out.println(ls); // [b 5,e 3,c 2,d 2,a 1,f 0] // method3:实例化比较器模板比较器<term> termcmp = termcmp = new termcmp = new termcmp = new term <term>( ){public int compare(t1,tim t2){返回t1.id -t2.id; }}; collections.Sort(LS,TERMCMP); system.out.println(ls); // [f 0,a 1,c 2,d 2,e 3,e 3,b 5] // method4:element instrument instrument listable list <sterm> lss = new arraylist <sterm <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;公共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(){返回WD+“”+FREQ; }} public class testt {public static void main(string [] args){// todo auto-generated方法stub Priortityqueue <WordFreq> pq = pq = new PriortityQueue <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);}并不保证遍历的有序
如果列表<string> ls进行排序的话,不需要写比较器,因为字符串本身有比较的实现。