java对ArrayList排序代码示例

所属分类: 软件编程 / java 阅读数: 57
收藏 0 赞 0 分享

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

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

更多精彩内容其他人还在看

Java基于反射机制实现全部注解获取的方法示例

这篇文章主要介绍了Java基于反射机制实现全部注解获取的方法,结合实例形式分析了java反射机制获取注解的具体实现方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 信号量Semaphore的实现

这篇文章主要介绍了Java 信号量Semaphore的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

eclipse+maven+spring mvc项目基本搭建过程

这篇文章主要介绍了eclipse+maven+spring mvc项目基本搭建过程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring boot集成swagger2生成接口文档的全过程

这篇文章主要给大家介绍了关于Spring boot集成swagger2生成接口文档的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java冒泡排序法和选择排序法的实现

这篇文章主要介绍了Java冒泡排序法和选择排序法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Cloud Alibaba教程之Sentinel的使用

这篇文章主要介绍了Spring Cloud Alibaba教程之Sentinel的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Josephus环的四种解法(约瑟夫环)基于java详解

这篇文章主要介绍了Josephus环的四种解法(约瑟夫环)基于java详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java继承Thread类创建线程类示例

这篇文章主要介绍了Java继承Thread类创建线程类,结合实例形式分析了java线程操作相关使用技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java使用Callable和Future创建线程操作示例

这篇文章主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

springBoot使用JdbcTemplate代码实例

这篇文章主要介绍了springBoot使用JdbcTemplate代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多