如何实现对象的排序Comparable
来源:互联网 发布:linux文件强制锁 编辑:程序博客网 时间:2024/05/18 23:13
作者:叁念
问题情形:
有这么一组对象(员工类),他们都有姓名属性(name),工资(salary ).现在我们希望他能够以工资的多少进行升序排序,应该怎么办?
- 首先请看员工类组成:
public class User { private String name; private double salary; public User(String name, double salary) { super(); this.name = name; this.salary = salary; } @Override public String toString() { return "User [name=" + name + ", salary=" + salary + "]"; }}
- 我们现在有主类如下:
import java.util.Arrays;import java.util.Random;public class Test { public static void main(String[] args) { User [] userArrary = new User [10]; Random random = new Random(); for (int i = 0; i < userArrary.length; i++) { int salary = random.nextInt(101); userArrary[i] = new User("员工" + i + "号", salary); } System.out.println(Arrays.toString(userArrary)); }}
以上输出结果如下:
[User [name=员工0号, salary=69.0], User [name=员工1号, salary=61.0], User [name=员工2号, salary=38.0], User [name=员工3号, salary=19.0], User [name=员工4号, salary=84.0], User [name=员工5号, salary=6.0], User [name=员工6号, salary=7.0], User [name=员工7号, salary=0.0], User [name=员工8号, salary=35.0], User [name=员工9号, salary=36.0]]
- 好!现在就开始对员工对象以薪水排序,要实现Comparable接口,重写compareTo方法
public class User implements Comparable<User> { private String name; private double salary; public User(String name, double salary) { super(); this.name = name; this.salary = salary; } @Override public String toString() { return "User [name=" + name + ", salary=" + salary + "]"; } @Override public int compareTo(User o) { if(this.salary > o.salary) return 1; else if(this.salary < o.salary) return -1; else return 0;// 也可以这么写// return Double.compare(this.salary, o.salary); }}
4.主类写法以及运行结果(这样就实现了以对象属性大小的排序)
import java.util.Arrays;import java.util.Random;public class Test { public static void main(String[] args) { User [] userArrary = new User [10]; Random random = new Random(); for (int i = 0; i < userArrary.length; i++) { int salary = random.nextInt(101); userArrary[i] = new User("员工" + i + "号", salary); } System.out.println(Arrays.toString(userArrary)); System.out.println("排序后:");// 排序 Arrays.sort(userArrary); System.out.println(Arrays.toString(userArrary)); }}
结果:
[User [name=员工0号, salary=42.0], User [name=员工1号, salary=66.0], User [name=员工3号, salary=2.0], User [name=员工5号, salary=0.0], User [name=员工6号, salary=58.0], User [name=员工7号, salary=70.0], User [name=员工8号, salary=87.0], User [name=员工9号, salary=7.0]]排序后:[User [name=员工5号, salary=0.0], User [name=员工3号, salary=2.0], User [name=员工9号, salary=7.0], User [name=员工4号, salary=23.0], User [name=员工0号, salary=42.0], User [name=员工6号, salary=58.0],User [name=员工1号, salary=66.0],User [name=员工7号, salary=70.0], User [name=员工2号, salary=82.0], User [name=员工8号, salary=87.0]]
阅读全文
0 0
- 如何实现对象的排序Comparable
- Comparable实现对象排序
- Comparable接口实现对象排序
- 对象排序,实现comparable接口
- 使用 Comparable 接口实现对象的属性排序
- Comparable接口实现自定义对象的排序功能
- 对象排序:Comparator&Comparable
- Java集合对象的排序使用Collection.sort方法,先实现Comparable接口
- java 对象数组的排序(实现Comparable接口)和二分查找
- Comparable实现自定义排序
- 对象排序:Comparator&Comparable
- 对象排序Comparator与Comparable
- Java comparable接口 对象排序
- Java:对象排序:Comparator&Comparable
- 学生对象成绩排序(Comparable)
- 对象数组的排序Comparable接口的使用
- Java自定义实现Comparable接口的类,实现多维排序
- TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式
- Class.getResourceAsStream()与ClassLoader.getResourceAsStream()的区别
- android实现第三方QQ登录
- 自学框架知识的较好的入门视频分享
- 正式版TBSA 6.0(用来分析多层及高层建筑结构的专用程序)
- 如何才能真正的提高自己,成为一名出色的架构师?
- 如何实现对象的排序Comparable
- iOS静态库和动态库
- 字符串C++的封装CString
- ImportError: libicui18n.so.56 and/or libicui18n.so.58 when importing cv2
- HashMap深度解析(一)
- 在JSP页面转换时间格式
- 第8周【项目2
- 第十四周项目1验证算法
- ubuntu16.04 安装CUDA 8.0 和 cuDNN 5.1 /cudnn6.0,可适用于gpu版本的(tensorflow,caffe,mxnet)