如何实现对象的排序Comparable
2017-12-07 10:03
369 查看
作者:叁念
问题情形:
有这么一组对象(员工类),他们都有姓名属性(name),工资(salary ).现在我们希望他能够以工资的多少进行升序排序,应该怎么办?
首先请看员工类组成:
我们现在有主类如下:
以上输出结果如下:
好!现在就开始对员工对象以薪水排序,要实现Comparable接口,重写compareTo方法
4.主类写法以及运行结果(这样就实现了以对象属性大小的排序)
结果:
问题情形:
有这么一组对象(员工类),他们都有姓名属性(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]]
相关文章推荐
- J2SE基础夯实系列之List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用-- Collections与Arrays
- Comparable实现对象排序
- 对象的比较与排序(三):实现IComparable<T>和IComparer<T>泛型接口(转)
- Comparator与Comparable接口实现对象排序
- J2SE基础夯实系列之List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用
- 使用 Comparable 接口实现对象的属性排序
- 比较器的使用,实现 Comparable接口,功能:实现对象的多条件比较,排序
- J2SE基础夯实系列之List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用
- 实现Comparable接口,把对象按优先级进行排序
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式
- Comparable接口实现自定义对象的排序功能
- 如何实现自定义类对象数组的排序
- List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用
- 对象如何实现排序
- 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: [java] view plain copy /** * 根据ord
- 如何实现自定义类对象数组的排序
- java 集合(5) 类对象排序 / 类实现Comparable 接口 / 调用Collections 类sort()
- 实现Comparable接口对存放自定义对象列表(数组)进行排序
- 对象的比较与排序(三):实现IComparable<T>和IComparer<T>泛型接口