软件编程
位置:首页>> 软件编程>> java编程>> java对ArrayList排序代码示例

java对ArrayList排序代码示例

作者:sunmenggmail  发布时间:2023-11-24 20:14:21 

标签:java,arraylist,排序

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


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的实现。

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com