`

javaList排序的两种方法

阅读更多
 第一种方法,就是list中对象实现Comparable接口,代码如下:
  01 public class Person implements Comparable<Person> {
  02     private String name;
  03     private Integer order;
  04
  05     /**
  06      * @return the name
  07      */
  08     public String getName() {
  09         return name;
  10     }
  11
  12     /**
  13      * @param name
  14      *            the name to set
  15      */
  16     public void setName(String name) {
  17         this.name = name;
  18     }
  19
  20     /**
  21      * @return the order
  22      */
  23     public Integer getOrder() {
  24         return order;
  25     }
  26
  27     /**
  28      * @param order
  29      *            the order to set
  30      */
  31     public void setOrder(Integer order) {
  32         this.order = order;
  33     }
  34
  35     @Override
  36     public int compareTo(Person arg0) {
  37         return this.getOrder().compareTo(arg0.getOrder());
  38     }
  39
  40 }
  01 public static void main(String[] args) {
  02     List<Person> listA = new ArrayList<Person>();
  03     Person p1 = new Person();
  04     Person p2 = new Person();
  05     Person p3 = new Person();
  06
  07     p1.setName("name1");
  08     p1.setOrder(1);
  09     p2.setName("name2");
  10     p2.setOrder(2);
  11     p3.setName("name3");
  12     p3.setOrder(3);
  13
  14     listA.add(p2);
  15     listA.add(p1);
  16     listA.add(p3);
  17     Collections.sort(listA);
  18     for (Person p : listA) {
  19         System.out.println(p.getName());
  20     }
  21 }
  第二种方法,就是在重载Collections.sort方法,代码如下:
  01 public class Person {
  02     private String name;
  03     private Integer order;
  04
  05     /**
  06      * @return the name
  07      */
  08     public String getName() {
  09         return name;
  10     }
  11
  12     /**
  13      * @param name
  14      *            the name to set
  15      */
  16     public void setName(String name) {
  17         this.name = name;
  18     }
  19
  20     /**
  21      * @return the order
  22      */
  23     public Integer getOrder() {
  24         return order;
  25     }
  26
  27     /**
  28      * @param order
  29      *            the order to set
  30      */
  31     public void setOrder(Integer order) {
  32         this.order = order;
  33     }
  34
  35 }
  01 public static void main(String[] args) {
  02         List<Person> listA = new ArrayList<Person>();
  03         Person p1 = new Person();
  04         Person p2 = new Person();
  05         Person p3 = new Person();
  06
  07         p1.setName("name1");
  08         p1.setOrder(1);
  09         p2.setName("name2");
  10         p2.setOrder(2);
  11         p3.setName("name3");
  12         p3.setOrder(3);
  13
  14         listA.add(p2);
  15         listA.add(p1);
  16         listA.add(p3);
  17
  18         Collections.sort(listA, new Comparator<Person>() {
  19             public int compare(Person arg0, Person arg1) {
  20                 return arg0.getOrder().compareTo(arg1.getOrder());
  21             }
  22         });
  23
  24         for (Person p : listA) {
  25             System.out.println(p.getName());
  26         }
  27     }
  两次执行的结果都是:
  name1
  name2
  name3
分享到:
评论

相关推荐

    Java对List进行排序的两种实现方法

    主要给大家介绍了关于Java对List进行排序的两种实现方法,第一种是实体类自己实现比较,第二种是借助比较器进行排序,下面开一起看看详细的介绍吧,有需要的朋友们可以参考借鉴。

    java中set、list和map的使用方法实例

    // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该对象的内部细节。 // 学习set对象容器的使用 // set容器中的对象不允许重复 // set容器接口的实现类有HashSet和 ...

    用Java集合中的Collections.sort方法如何对list排序(两种方法)

    本文通过两种方法给大家介绍java集合中的Collections.sort方法对list排序,第一种方式是list中的对象实现Comparable接口,第二种方法是根据Collections.sort重载方法实现,对collections.sort方法感兴趣的朋友一起...

    Compable和Comparator自定义对象属性排序

    可以通过两种方式自定义对象的属性大小进行比较,对一个list或数组对根据属性排序一个list或数组

    java中list、set和map 的区别

    List按对象进入的顺序保存对象,不做排序或...  实际上有两种List: 一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是为快速随机访问设计的,而是具有一套更通用的方法。  L

    java常用工具类的使用

    而在Java类库中有一个Arrays类的sort方法已经实现各种数据类型的排序算法。程序员只需要调用该类的方法即可。 代码演示:Arrays实现排序 public static void main(String[] args) { int[] ages={23, 45,12,76,34,...

    java 面试题 总结

    Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byte...

    JAVA面试题最全集

    35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有...

    AIC的Java课程1-6章

     理解运用继承和组合两种重用方式定义堆栈和队列,知道两种重用方式的适用场合。  理解使用递归方法构建二叉排序树,前序、中序、后序遍历二叉树。  学习ArrayList与LinkedList类,理解封装数组和...

    java面试宝典

    237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    (5) implements 子句用于说明类中将实现哪些接口,接口是 Java 的一种引用类 型。 (6) 类体包含了变量和方法。在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义...

    Java面试宝典-经典

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    java面试题

    51.5. java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 25 52. 数据连接池 25 52.1. 连接池的基本原理: 25 52.2. 连接池的工作机制 25 52.3. 建立连接池 26 ...

    Java面试宝典2010版

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    JAVA基础课程讲义

    对象的序列化主要有两种用途 161 序列化涉及的类和接口 162 序列化/反序列化的步骤和实例 162 综合的序列化和反序列化练习 163 JAVA.IO包相关流对象用法总结(尚学堂1002班王鑫) 165 IO中其他常用类 165 File类 165 ...

    java开源包6

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包11

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包9

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    疯狂JAVA讲义

    学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大? 159 5.9 初始化块 159 5.9.1 使用初始化块 160 5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 ...

    JAVA上百实例源码以及开源项目

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

Global site tag (gtag.js) - Google Analytics