用Collections.sort方法对list排序有两种方法

 第一种是list中的对象实现Comparable接口,如下:

  1. /**
  2. * 根据order对User排序
  3. */
  4. public class User implements Comparable<User>{
  5. private String name;
  6. private Integer order;
  7. public String getName() {
  8. return name;
  9. }
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13. public Integer getOrder() {
  14. return order;
  15. }
  16. public void setOrder(Integer order) {
  17. this.order = order;
  18. }
  19. public int compareTo(User arg0) {
  20. return this.getOrder().compareTo(arg0.getOrder());
  21. }
  22. } 测试一下:
  23. public class Test{
  24. public static void main(String[] args) {
  25. User user1 = new User();
  26. user1.setName("a");
  27. user1.setOrder(1);
  28. User user2 = new User();
  29. user2.setName("b");
  30. user2.setOrder(2);
  31. List<User> list = new ArrayList<User>();
  32. //此处add user2再add user1
  33. list.add(user2);
  34. list.add(user1);
  35. Collections.sort(list);
  36. for(User u : list){
  37. System.out.println(u.getName());
  38. }
  39. }
  40. }


输出结果如下
a
 b

第二种方法是根据Collections.sort重载方法来实现,例如:

  1. /**
  2. * 根据order对User排序
  3. */
  4. public class User { //此处无需实现Comparable接口
  5. private String name;
  6. private Integer order;
  7. public String getName() {
  8. return name;
  9. }
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13. public Integer getOrder() {
  14. return order;
  15. }
  16. public void setOrder(Integer order) {
  17. this.order = order;
  18. }
  19. }
  20. 主类中这样写即可(HastSet——>List——>sort进行排序):
  21. public class Test {
  22. public static void main(String[] args) {
  23. User user1 = new User();
  24. user1.setName("a");
  25. user1.setPrice(11);
  26. User user2 = new User();
  27. user2.setName("b");
  28. user2.setPrice(2);
  29. Set<User> Hset = new HashSet<User>();
  30. Hset.add(user2);
  31. Hset.add(user1);
  32. List<User> list = new ArrayList<User>();
  33. list.addAll(Hset);
  34. Collections.sort(list,new Comparator<User>(){
  35. public int compare(User arg0, User arg1) {
  36. return arg0.getPrice().compareTo(arg1.getPrice());
  37. }
  38. });
  39. for(User u : list){
  40. System.out.println(u.getName());
  41. }
  42. }

输出结果如下:

a
b

 

默认为升序,将。return arg0.getOrder().compareTo(arg1.getOrder());    改为:
return arg1.getOrder().compareTo(arg0.getOrder());   
就成降序的了。

java List 排序 Collections.sort()的更多相关文章

  1. java List 排序 Collections.sort() 对 List 排序

    class User { String name; String age;  public User(String name,String age){  this.name=name;  this.a ...

  2. Java语言利用Collections.sort对Map,List排序

    1.main方法包含TreeMap排序1,TreeMap排序2,HashMap排序,List<Integer>排序,List<Bean>排序,List<Map>排序 ...

  3. python 中的sort 和java中的Collections.sort()函数的使用

    x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是 ...

  4. Java—集合框架 Collections.sort()、Comparable接口和Comparator接口

    Collentions工具类--java.util.Collections Collentions是Java集合框架中,用来操作集合对象的工具类,也是Java集合框架的成员,与List.Map和Set ...

  5. 对List数组进行排序 Collections.sort(param1,param2)

    @SuppressWarnings("unchecked") List<PageData> group_items_list = (List<PageData&g ...

  6. JAVA对list集合进行排序Collections.sort()

    对一个集合中的对象进行排序,根据对象的某个指标的大小进行升序或降序排序.代码如下: // 进行降序排列 Collections.sort(list, new Comparator<ResultT ...

  7. Java中使用Collections.sort()方法对数字和字符串泛型的LIst进行排序

    在List的排序中常用的是Collections.sort()方法,可以对String类型和Integer类型泛型的List集合进行排序. 首先演示sort()方法对Integer类型泛型的List排 ...

  8. 在Java中使用Collections.sort 依据多个字段排序

    一.如何使用Collections工具类进行排序 使用Collections工具类进行排序主要有两种方式: 1.对象实现Comparable接口,重写compareTo方法 /** * @author ...

  9. Java-小技巧-006 List 排序 Collections.sort()

    一.数组操作类:Arrays 最早开始使用,查看方法二分查找:public static int binarySearch(数据类型[] a, 数据类型 key) 前提是有序的 equals 先排序 ...

随机推荐

  1. 【NOIP2015】提高组D1 解题报告

    P1978神奇的幻方 Accepted 描述 幻方是一种很神奇的 N ∗ N 矩阵:它由数字 1,2,3, … … , N ∗ N 构成,且每行.每列及两条对角线上的数字之和都相同. 当 N 为奇数时 ...

  2. Linux-如何查看登陆shell的类型

    输入一个系统不认识的命令(如#ig)获得系统提示 aix/#ig ksh ig not found #echo $ (适用sh/ksh) aix/#echo $ ksh #echo $SHELL(用户 ...

  3. java面试题之ssh

    1.写出你熟悉的开源框架以及各自的作用(项目中为什么使用SSH) 答:框架:hibernate,spring,struts1/struts2. Hibernate主要用于数据持久化:封装了JDBC操作 ...

  4. RAD,V模型

    介绍: RAD(Rap Application Developmen快速应用开发t)模型是软件开发过程中的一个重要模型,由于模型构图类似字母V,所以又称为软件开发的V模型.它通过开发和测试同时进行的方 ...

  5. iphone获取当前运行进程列表

    通过调用 sys/sysctl.h 读取系统内核获取进程列表 . 代码悦德财富:https://yuedecaifu.com 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...

  6. Mac下为我们开发的App制作gif动画演示(不仅仅针对开发者,想做gif图片的也可参考)

    趁着工作不忙,就闲着倒腾自己的事情,把自己写的一个完整App<丁丁印记>整理了一番,总结其中用到的技术和实现的功能,并想把一些用到的技术分享给各位工友们,因为我自学iOS开发得益于大家的分 ...

  7. RelativeLayout相对布局中拖放控件的办法

    相对布局中拖了一个控件以后,要拖放第二个空间,死活拖不进去.仔细查看了鼠标的状况,发现要把第二个控件拖到第一个控件的周围,才能成功.果然是相对布局.

  8. Java 获取APK安装程序的包名

     Java 获取APK安装程序的包名核心的两个类:  ResPackage ApkDecoder  package com.temobi.util; import java.io.File; impo ...

  9. mysql 批量创建表,利用存储过程

    最近根据需求,需要提前创建一批日志表,以日期结尾,每天创建一张,例如XXX20160530,请参考如下: BEGIN    DECLARE `sName` VARCHAR(128);   DECLAR ...

  10. Arrays.equals()

    我们知道判断字符串相等使用的是equals方法,那么要是判断两个字符串数组是否相等呢,要是char数组呢,同样的java.util.Arrays类提供了equals()方法,如下是官方API: /** ...