第一种方法,就是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进行排序的两种实现方法,第一种是实体类自己实现比较,第二种是借助比较器进行排序,下面开一起看看详细的介绍吧,有需要的朋友们可以参考借鉴。
// GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该对象的内部细节。 // 学习set对象容器的使用 // set容器中的对象不允许重复 // set容器接口的实现类有HashSet和 ...
本文通过两种方法给大家介绍java集合中的Collections.sort方法对list排序,第一种方式是list中的对象实现Comparable接口,第二种方法是根据Collections.sort重载方法实现,对collections.sort方法感兴趣的朋友一起...
可以通过两种方式自定义对象的属性大小进行比较,对一个list或数组对根据属性排序一个list或数组
List按对象进入的顺序保存对象,不做排序或... 实际上有两种List: 一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是为快速随机访问设计的,而是具有一套更通用的方法。 L
而在Java类库中有一个Arrays类的sort方法已经实现各种数据类型的排序算法。程序员只需要调用该类的方法即可。 代码演示:Arrays实现排序 public static void main(String[] args) { int[] ages={23, 45,12,76,34,...
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byte...
35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有...
理解运用继承和组合两种重用方式定义堆栈和队列,知道两种重用方式的适用场合。 理解使用递归方法构建二叉排序树,前序、中序、后序遍历二叉树。 学习ArrayList与LinkedList类,理解封装数组和...
237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...
(5) implements 子句用于说明类中将实现哪些接口,接口是 Java 的一种引用类 型。 (6) 类体包含了变量和方法。在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义...
46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...
51.5. java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 25 52. 数据连接池 25 52.1. 连接池的基本原理: 25 52.2. 连接池的工作机制 25 52.3. 建立连接池 26 ...
46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...
对象的序列化主要有两种用途 161 序列化涉及的类和接口 162 序列化/反序列化的步骤和实例 162 综合的序列化和反序列化练习 163 JAVA.IO包相关流对象用法总结(尚学堂1002班王鑫) 165 IO中其他常用类 165 File类 165 ...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大? 159 5.9 初始化块 159 5.9.1 使用初始化块 160 5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 ...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...