首页 > 编程 > Java > 正文

java对ArrayList排序代码示例

2019-11-26 14:51:05
字体:
来源:转载
供稿:网友

不废话了,直接给大家贴代码了。

class term {   String str;   int id;    public term(String str, int id) {     this.str = str;     this.id = id;   }   public String toString() {     return str+" "+id;   } } class sterm implements Comparable{   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: explicit implements Comparator class termComparator implements Comparator {   public int compare (Object o1, Object o2) {     return ((term)o1).id - ((term)o2).id;   } } public class t1 {   /**    * @param args    */   public static void main(String[] args) {     // TODO Auto-generated 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){ //       return new Double((Integer)o1).compareTo(new Double ((Integer)o2)); //     } //   });     //method1     List<term> ls = new ArrayList<term>();     ls.add(new term("a",1));     ls.add(new term("b",5));     ls.add(new term("c",2));     ls.add(new term("d",2));     ls.add(new term("e",3));     ls.add(new term("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 implements     Collections.sort(ls, new Comparator(){       public int compare(Object o1, Object o2){         return ((term)o2).id - ((term)o1).id;       }     });     System.out.println(ls);//[b 5, e 3, c 2, d 2, a 1, f 0]     //method3:instantiate a Comparator template     Comparator<term> termCmp = 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:element implements Comparable     List<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的用法和上述的排序类似,有三种方法:

class WordFreq implements Comparable{     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-generated 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);}

并不保证遍历的有序

如果List<String> ls 进行排序的话,不需要写Comparator, 因为String本身有compareTo的实现。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表