java自定义排序(Comparable与Comparator)
来源:互联网 发布:淘宝店铺页头怎么换 编辑:程序博客网 时间:2024/05/12 03:26
import java.util.*;/** * @author 曹帅 E-mail:cslvln@foxmail.com * @version 创建时间:2017/9/11 下午2:08 */public class User implements Comparable<User>{ private String name; private int age; public User() { } public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public int compareTo(User o) { int i = o.age - age; if(i == 0){ return o.name.compareTo(name); } return i; } public static void main(String[] args) { User user1 = new User("Jackie", 25); User user2 = new User("Jim", 18); User user3 = new User("Lucy", 30); User user4 = new User("Kate", 18); List<User> users = new ArrayList<User>(); users.add(user1); users.add(user2); users.add(user3); users.add(user4); System.out.println("排序前" ); for (User user : users) { System.out.println(user.getName() + " " + user); } /** * Java中不允许直接对自定义的对象调用sort直接排序,需要实现Comparable接口 * 两种方法实现自定义排序: * 方法一:添加一个比较容器Comparator * 方法二:自定义的Java对象实现Comparable接口 * (Java中的包装类和String都实现了Comparable接口了) * 两种方法的区别(Comparable和Comparator的区别) * 1.Comparable& Comparator 都是用来实现集合中的排序的,只是Comparable是在集合内部定义的方法实现的排序,Comparator是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义Comparator接口的方法compare()或在集合内实现Comparable接口的方法compareTo(). * 2.Comparable是一个对象本身就已经支持自比较所需要实现的接口(如String Integer自己就可以完成比较大小操作) * 而Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较. * 3.实现Comparable接口的方式比实现Comparator接口的耦合性 要强一些,如果要修改比较算法,要修改Comparable接口的实现类,而实现Comparator的类是在外部进行比较的,不需要对实现类有任何修改 */ Collections.sort(users); /*Collections.sort(users, new Comparator<User>() { @Override public int compare(User o1, User o2) { int i = o1.getAge() - o2.getAge(); if(i == 0){ return o1.getName().compareTo(o2.getName()); } return i; } });*/ System.out.println("排序后" ); for (User user : users) { System.out.println(user.getName() + " " + user); } }}
阅读全文
0 0
- java自定义排序(Comparable与Comparator)
- java Comparator 与Comparable
- 对象排序Comparator与Comparable
- Java中的排序 Comparator,Comparable
- java comparable 和 comparator 排序
- Java:对象排序:Comparator&Comparable
- Java Comparable Comparator 排序应用
- [java 排序] Comparable 和 Comparator
- Comparable与Comparator,java中的排序与比较
- java使用Comparator与Comparable接口对对象排序
- java使用Comparator与Comparable接口对对象排序
- Java的comparable与comparator
- java之Comparator与Comparable
- Java数据结构 Comparable与Comparator
- Java中的Comparable与Comparator
- [java集合]comparable与comparator
- Java中的Comparable与Comparator
- 自定义数据排序(Comparable,Comparator)JAVA126
- Selenium with Python中文翻译(四)
- 生物信息学-批量上传文件
- 51nod 1101 换零钱 完全背包计数
- crf 的数数 (树状数组 离线操作)
- AndroidStudio获取SHA1签名笔记
- java自定义排序(Comparable与Comparator)
- Java新特性之二Lambda表达式
- DB2通用分页存储过程
- form 表单提交
- 香港物联网初步现形!首个 LoRaWAN 网络日前正式部署
- link和@import的区别
- 【学习笔记】AMS启动App流程和原理
- Thymeleaf教程 (十二) 标签内,js中使用表达式
- 通过Android应用更改系统时间