18.Comparable,Comparator比较对象大小
来源:互联网 发布:发信息软件 编辑:程序博客网 时间:2024/06/04 23:31
package com.example.test2;import java.util.Arrays;import java.util.Comparator;import java.util.Random;/** * * 比较对象大小 * * 1.重写equals()方法来比较两个对象是否相等 * 2.实现Comaprable接口,重写compareTo()方法比较对象大小 * 3.通过定义Comparator比较器来比较两个对象之间大小 * */class Employee implements Comparable{private String name;private int age;private double salary;public Employee(String name, int age, double salary){this.name = name;this.age = age;this.salary = salary;}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;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}public String toString(){return String.format("%s %d %.1f\n", name, age, salary);}public boolean equals(Object obj){if (!(obj instanceof Employee)){return false;}Employee tmp = (Employee)obj;return name.equals(tmp.name) && age == tmp.age && salary == tmp.salary;}//实现Comparable接口重写compareTo()方法来进行比较@Overridepublic int compareTo(Object o) {// TODO Auto-generated method stubEmployee e = (Employee)o;return name.compareTo(e.name) > 0 ? 1 : (name.compareTo(e.name) == 0) ? 0 : -1;}}//自定义MyArrays使用冒泡排序模拟Arrays.sort()方法class MyArrays{public static void sort(Object[] arr){for (int i = 0; i < arr.length; i++){for (int j = 0; j < arr.length-1-i; j++){if (((Comparable)arr[j]).compareTo((Comparable)arr[j+1]) > 0){Object tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}}public static void sort(Object[] arr, Comparator comparator){for (int i = 0; i < arr.length; i++){for (int j = 0; j < arr.length-1-i; j++){if (comparator.compare(arr[j], arr[j+1]) > 0){Object tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}}}public class TestDemo {//通过匿名类来自定义比较器public static Comparator AGE_SORT = new Comparator(){@Overridepublic int compare(Object o1, Object o2) {// TODO Auto-generated method stubEmployee e1 = (Employee)o1;Employee e2 = (Employee)o2;return e1.getAge() > e2.getAge() ? 1 : (e1.getAge() == e2.getAge() ? 0 : -1);}};public static Comparator SALARY_SORT = new Comparator(){@Overridepublic int compare(Object o1, Object o2) {// TODO Auto-generated method stubEmployee e1 = (Employee)o1;Employee e2 = (Employee)o2;return e1.getSalary() > e2.getSalary() ? 1 : (e1.getSalary() == e2.getSalary() ? 0 : -1);}};public static void main(String[] args) {// TODO Auto-generated method stubEmployee e1 = new Employee("zhang", 20, 1111.1);Employee e2 = new Employee("zhang", 20, 1111.1);//等于号比较两个对象的地址if(e1 == e2){System.out.println("e1 == e2");}else{System.out.println("e1 != e2");}//Employee重写了该对象的equals方法,按照其成员变量进行一一比较if(e1.equals(e2)){System.out.println("e1.equals(e2)");}else{System.out.println("!e1.equals(e2)");}String[] nameArr = {"zhang", "li", "wang", "gao", "ma", "liu"};Employee[] employArr = new Employee[3];//随机产生三组Employee对象用来测试其比较大小的结果for (int i = 0; i < 3; i++){employArr[i] = new Employee(nameArr[new Random().nextInt(nameArr.length)],new Random().nextInt(30), Double.parseDouble(String.format("%.1f", Math.random()*10000)));}System.out.println(Arrays.toString(employArr));System.out.println("=====Arrays=====");Arrays.sort(employArr);System.out.println(Arrays.toString(employArr));Arrays.sort(employArr, AGE_SORT);System.out.println(Arrays.toString(employArr));Arrays.sort(employArr, SALARY_SORT);System.out.println(Arrays.toString(employArr));System.out.println("=====MyArrays=====");MyArrays.sort(employArr);System.out.println(Arrays.toString(employArr));MyArrays.sort(employArr, AGE_SORT);System.out.println(Arrays.toString(employArr));MyArrays.sort(employArr, SALARY_SORT);System.out.println(Arrays.toString(employArr));}}
1 0
- 18.Comparable,Comparator比较对象大小
- Comparable和Comparator之对象比较
- 对象的比较Comparable与Comparator
- Comparable和Comparator实现对象比较
- java对象比较规则:Comparable & Comparator
- 对象的比较comparable与comparator
- 使用Comparable和Comparator接口比较对象
- 比较Comparable和Comparator
- Comparator和Comparable比较
- comparable和comparator比较
- Comparable和Comparator比较
- Comparable、Comparator比较器
- Comparator 和 Comparable 比较
- Comparator 和 Comparable比较
- Comparator和Comparable比较
- Comparable 与 Comparator 比较
- comparable和comparator比较
- 对象排序:Comparator&Comparable
- 正确使用Android性能分析工具——TraceView
- 为什么大多服务器跑的都是Linux?
- 网卡中断与多队列
- shell常用操作命令系列:文件相关操作命令
- IOS超时的另一种做法
- 18.Comparable,Comparator比较对象大小
- 微信红包-找出数组中过半数的数字
- Android的Paint、Canvas和Matrix讲解
- C++ 模版实现自定义释放类对象成员的堆内存空间
- activiti流程无法随事务回滚
- 什么是监督学习(supervised learning)
- Error parsing column 33
- 【JavaWeb】利用Session保存用户登录信息
- CG标准函数库