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)

相关推荐

  • Java ArrayList的不同排序方法

    由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在添加和移除元素的时候进行动态的扩展和缩减.你可能已经使用过 ArrayList,因此我将略过基础部分.如果你对 ArrayList 还不熟悉,你可以参考它的 API 文档,可以很容易理解在 ArrayList 上执行基本的操作. 在这篇文章中,我将讨论 ArrayList 中一种极其重要的操作,你很

  • java的arraylist排序示例(arraylist用法)

    写了一个java数组排序示例,这里分享给大家共同学习 复制代码 代码如下: package com.yonyou.test;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class Test { public static void main(String[] args) {  Student zlj = new St

  • java ArrayList集合中的某个对象属性进行排序的实现代码

    开发中有时候需要自己封装分页排序时,List如何对某一属性排序呢,分享一个小实例,大家共勉,希望能对大家有用,请多多指教. 1.Student的Bean如下: public class Student { private int age; private String name; private String weight; public String getWeight() { return weight; } public void setWeight(String weight) { th

  • java教程之二个arraylist排序的示例分享

    示例1 复制代码 代码如下: package com.yonyou.test;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class Test { public static void main(String[] args) {  Student zlj = new Student("丁晓宇", 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,

  • Java实现拓扑排序的示例代码

    目录 铺垫 简介 工作过程 数据结构 拓扑排序 测试样例1 测试样例2 总结 铺垫 有向图:我们这节要讲的算法涉及到有向图,所以我先把有向图的一些概念说一下,文章后面就不做解释啦.首先有向图节点与节点之间是用带箭头的线连接起来的.节点有出度和入度的概念,连线尾部指向的节点出度加1,连线头部,也就是箭头指向的节点入度加1.看下面这个例子,A的入度为0,出度为2,B的入度为1,出度为1,C的入度为1,出度为1,D的入度为2,出度为0. 邻接表:邻接表是存储图结构的一种有效方式,如下图所示,左边节点数

  • java Comparator.comparing排序使用示例

    目录 背景 实体类 示例一 示例二 背景 以前常用的排序方式是通过实现Comparator接口来进行排序,写法相对来说比较复杂,使用Comparator.comparing可以简化代码,看起来逻辑更清晰. 实体类 import lombok.Data; /** * @Author: ck * @Date: 2021/10/12 3:51 下午 */ @Data public class Model { private String name; private int age; } 示例一 通过实

  • Java算法之堆排序代码示例

    堆是一种特殊的完全二叉树,其特点是所有父节点都比子节点要小,或者所有父节点都比字节点要大.前一种称为最小堆,后一种称为最大堆. 比如下面这两个: 那么这个特性有什么作用?既然题目是堆排序,那么肯定能用来排序.想要用堆排序首先要创建一个堆,如果对4 3 6 2 7 1 5这七个数字做从小到大排序,需要用这七个数创建一个最大堆,来看代码: public class HeapSort { private int[] numbers; private int length; public HeapSor

  • Java动态编译执行代码示例

    在某些情况下,我们需要动态生成java代码,通过动态编译,然后执行代码.JAVAAPI提供了相应的工具(JavaCompiler)来实现动态编译.下面我们通过一个简单的例子介绍,如何通过JavaCompiler实现java代码动态编译. 一.获取JavaCompiler JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 获取JDK提供的java编译器,如果没有提供编译器,则返回null: 二.编译 //获取java文件管理

  • Java递归算法遍历部门代码示例

    递归是一个非常有用的知识点.写点实例帮助自己记忆 中间有过程代码 首先一个javapojo类 package com.qcf.po; import java.util.HashSet; import java.util.Set; public class Depart { private long id; private String name; private String destion; //用户 Set<User> users=new HashSet<User>(); //

  • Java二叉树路径和代码示例

    给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径. 一个有效的路径,指的是从根节点到叶节点的路径. 样例 给定一个二叉树,和 目标值 = 5: 1 / \ 2 4 / \ 2 3 返回: [ [1, 2, 2], [1, 4] ] 代码如下: /** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public Tree

  • Java实现ArrayList排序的方法详解

    目录 简介 法1:JDK8的stream 法2:Comparator#compare() 法3:Comparable#compareTo() 简介 说明 本文用示例介绍Java的ArrayList排序的方法. List排序方法 主要有三种方法(按推荐度排序): JDK8的stream Comparator#compare() Comparable#compareTo() 法1:JDK8的stream 见:一文详解Java中Stream流的使用 法2:Comparator#compare() 需求

  • java tostring方法重写代码示例

    当需要将一个对象输出到显示器时,通常要调用他的toString()方法,将对象的内容转换为字符串.java中的所有类默认都有一个toString()方法 默认情况下 System.out.println(对象名)或者System.out.println(对象名.toString())输出的是此对象的类名和此对象对应内存的首地址 如果想自定义输出信息必须重写toString()方法 注意事项 1.必须被声明为public 2.返回类型为String 3.方法的名称必须为toString,且无参数

  • Java中Switch用法代码示例

    一.java当中的switch与C#相比有以下区别 注:在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样),  在java1.7后支持了对string的判断 还有一点要注意的是:在java中如果switch的case语句中少写了break;这个关键字,在编译的时候并没有报错.但是在执行的时候会一直执行所有case条件下的语句并不是去判断,所以会一直执行直到遇到break关键字跳出或者一直执行到defaut语句. 还有就是如果

随机推荐