博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA中Comparator的使用
阅读量:4920 次
发布时间:2019-06-11

本文共 1492 字,大约阅读时间需要 4 分钟。

关于Collections中的sort方法的使用

 

在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标。

此排序被保证是稳定的:不会因调用 sort 方法而对相等的元素进行重新排序。

举个例子:

定义一个User类,内有name和score两个属性。

定义一个ArryList,其内部元素为User对象,如何按照Userscore进行升序排序?

//声明User类型

public class User {

   public String name;

   public int score;

   public User(String name,int score)

   {

      this.name =name;

      this.score = score;

   }

}

//按照User对象的score进行排序,升序排序。需要继承Comparator接口

public class comparator implements Comparator<User>{

   public int compare(User u1,User u2)

   {

      return u1.score - u2.score;

   }

};

public class main {

 

   public static void main(String[] args) {

      // TODO Auto-generated method stub

      ArrayList<User> list = new ArrayList<User>();

      list.add(new User("wangqiang",100));

      list.add(new User("lizeyang",99));

      list.add(new User("linyenan",78));

      list.add(new User("yaojianliang",80));

      list.add(new User("xinhong",66));

      list.add(new User("gaoming",66));

      list.add(new User("liupeng",87));

      Collections.sort(list,new comparator());

      for(User index:list)

      {

         System.out.println(index.score + index.name);

      }

     

   }

  

 

}

最后排序结果为:

66gaoming

78linyenan

80yaojianliang

87liupeng

99lizeyang

100wangqiang

 

另外,如果按照User对象的name属性进行降序排列,那么修改compare类如下:

public class comparator implements Comparator<User>{

   public int compare(User u1,User u2)

   {

      return u2.name.compareTo(u1.name);

   }

};

降序结果为:

xinhong66

wangqiang100

lizeyang99

liupeng87

linyenan78

gaoming66

如果元素本身就是可比较的,且升序。那么默认的Collections.sort(Object)就可以实现。

但是如果需要降序的话,那么就得修改compare方法。比如:string对象

 

转载于:https://www.cnblogs.com/dongfangzhizi/p/5812975.html

你可能感兴趣的文章
链表实现单链表创建、排序(升序)
查看>>
Spring旅程(一)为什么使用Spring
查看>>
centos安装桌面和远程连接
查看>>
侠探锦毛鼠之真假白玉堂
查看>>
[mark]如何删除地址栏的记录?
查看>>
python CSV写中文
查看>>
poj3304 Segments
查看>>
Android onNewIntent调用时机
查看>>
命令模式
查看>>
MySQL 基础命令
查看>>
用css画个遨游logo
查看>>
杭电2061
查看>>
硬盘的工作原理
查看>>
开发日志
查看>>
使用 Intellij Idea 导出JavaDoc
查看>>
485. Max Consecutive Ones
查看>>
C#四舍五入保留一位小数
查看>>
删除本地git的远程分支和远程删除git服务器的分支【转】
查看>>
js -- 写个闭包
查看>>
属性动画
查看>>