文档章节

Java中List的排序

丁佳辉
 丁佳辉
发布于 2015/09/18 13:27
字数 410
阅读 8
收藏 0

第一种方法,就是list中对象实现Comparable接口,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public  class  Person  implements  Comparable<Person> {
     private  String name;
     private  Integer order;
 
     /**
      * @return the name
      */
     public  String getName() {
         return  name;
     }
 
     /**
      * @param name
      *            the name to set
      */
     public  void  setName(String name) {
         this .name = name;
     }
 
     /**
      * @return the order
      */
     public  Integer getOrder() {
         return  order;
     }
 
     /**
      * @param order
      *            the order to set
      */
     public  void  setOrder(Integer order) {
         this .order = order;
     }
 
     @Override
     public  int  compareTo(Person arg0) {
         return  this .getOrder().compareTo(arg0.getOrder());
     }
 
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public  static  void  main(String[] args) {
     List<Person> listA =  new  ArrayList<Person>();
     Person p1 =  new  Person();
     Person p2 =  new  Person();
     Person p3 =  new  Person();
 
     p1.setName( "name1" );
     p1.setOrder( 1 );
     p2.setName( "name2" );
     p2.setOrder( 2 );
     p3.setName( "name3" );
     p3.setOrder( 3 );
 
     listA.add(p2);
     listA.add(p1);
     listA.add(p3);
     Collections.sort(listA);
     for  (Person p : listA) {
         System.out.println(p.getName());
     }
}


第二种方法,就是在重载Collections.sort方法,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public  class  Person {
     private  String name;
     private  Integer order;
 
     /**
      * @return the name
      */
     public  String getName() {
         return  name;
     }
 
     /**
      * @param name
      *            the name to set
      */
     public  void  setName(String name) {
         this .name = name;
     }
 
     /**
      * @return the order
      */
     public  Integer getOrder() {
         return  order;
     }
 
     /**
      * @param order
      *            the order to set
      */
     public  void  setOrder(Integer order) {
         this .order = order;
     }
 
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public  static  void  main(String[] args) {
         List<Person> listA =  new  ArrayList<Person>();
         Person p1 =  new  Person();
         Person p2 =  new  Person();
         Person p3 =  new  Person();
 
         p1.setName( "name1" );
         p1.setOrder( 1 );
         p2.setName( "name2" );
         p2.setOrder( 2 );
         p3.setName( "name3" );
         p3.setOrder( 3 );
 
         listA.add(p2);
         listA.add(p1);
         listA.add(p3);
         
         Collections.sort(listA,  new  Comparator<Person>() {
             public  int  compare(Person arg0, Person arg1) {
                 return  arg0.getOrder().compareTo(arg1.getOrder());
             }
         });
         
         for  (Person p : listA) {
             System.out.println(p.getName());
         }
     }


© 著作权归作者所有

丁佳辉
粉丝 20
博文 454
码字总数 208770
作品 0
浦东
程序员
私信 提问
Java 8 将 list 转为 map

引言 创建一个对象类 1.List to Map – Collectors.toMap() 创建 Hosting 对象的列表,并使用 Collectors.toMap 将其转换为 Map。 2.List to Map – Duplicated Key 重复的 key 抛出异常。 ...

山川尽美
2019/09/06
167
0
Java8-2-Lambda表达式实战-一句话实现Map中按照Value排序

今天我们来实战一把, 对Map的Value值排序进行简化. 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群...

编程SHA
2018/12/19
42
0
数据库中间件 Sharding-JDBC 源码分析 —— 结果归并

摘要: 原创出处 http://www.iocoder.cn/Sharding-JDBC/result-merger/ 「芋道源码」欢迎转载,保留摘要,谢谢! 本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2. MergeEngine 2.1 Selec...

芋道源码
2017/10/29
319
0
Java 7 : 为接口类增加“public defender 方法”

目前还不能确定 Java 7 的发行版会不会包含闭包(closures)特性,但这个疑虑却带来另外一个新的:The “public defender methods” proposal. Java 7 试图通过简易方式为接口增加新的方法,而...

红薯
2010/06/01
528
5
JAVA HashMap排序, 引用类型和封装类型

构建Hashmap的时候 发现不能用double, 可以用String。 后来才发现double是原始数据类型, Double是它的封装类型,用在HashMap和 List中。 如果用double 无法编译通过,会提示 required ref...

qizok
2018/07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用Git的rebase操作优化提交历史

理解rebase的过程原理 rebase是另一种可以用来合并分支的机制,有些人翻译成“变基操作”,它和merge合并分支的原理完全不同,对于merge来说除了fast-forward合并,其他合并方式都会生成一次...

閒散人員
13分钟前
4
0
Snails 框架

Snails 框架 基于 SpringBoot + Ng-Alain 前后端分离的实现,可以作为新手入门项目,也可以作为小项目的基础框架去扩展。目前 Snails 系统框架已支持基本的后台功能,基于简单、实用设计,并...

Kuzan
39分钟前
5
0
区块链基本概念一览

本文翻译自 中本聪 (Satoshi Nakamoto) 提供的资料 区块链:点对点电子金融服务系统。(Bitcoin: A Peer-to-Peer Electronic Cash System ) 允许在线从甲方向乙方支付,而无需提供格外 的...

一口今心
46分钟前
6
0
java.util.ConcurrentModificationException 异常问题详解

环境:JDK 1.8.0_111 在Java开发过程中,使用iterator遍历集合的同时对集合进行修改就会出现java.util.ConcurrentModificationException异常,本文就以ArrayList为例去理解和解决这种异常。 ...

shzwork
今天
10
0
MAMP Pro for Mac(PHP/MySQL开发环境) v5.6

macdown为大家提供一款包含Macintosh、Apache、MySQL和PHP四大开发环境的软件, ——MAMP Pro mac,使用MAMP Pro Mac破解版,用户可以使用现有的动态DNS提供商轻松地将本地服务器连接到互联网...

云不若
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部