博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Comparable和Comparator
阅读量:5086 次
发布时间:2019-06-13

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

在用Arrays.sort给对象数组进行排序时,要求必须对象实现Comparable接口。

package com.sk;import java.util.Arrays;public class compare2 {  public static void main(String[] args) {    Employee[] staff=new Employee[4];    staff[0]=new Employee("sk",10000.0);    staff[1]=new Employee("sk3",110000.0);    staff[2]=new Employee("sk4",80000.0);    staff[3]=new Employee("sk2",70000.0);    //该方法在对对象数组进行排序时,对象必须实现comparable接口    Arrays.sort(staff);    for (Employee employee : staff) {        System.out.println(employee.getName()+":"+employee.getSalary());    }}        }class Employee implements Comparable
{ private String name; private Double salary; public String getName() { return name; } public Employee(String name, Double salary) { super(); this.name = name; this.salary = salary; } public void setName(String name) { this.name = name; } public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; } @Override public int compareTo(Employee other) { /** * Double.compare(x,y)方法:比较两个double值,x>y返回1。 * * compareTo方法的返回值为一个整型数值,如果两个对象不相等,则返回一个正值或负值。 * 在对两个整数进行比较时,可以返回相减值,但是不适用于浮点型 * 因为两个浮点数接近但又不想等时,他们的差四舍五入可能变成0;所以调用Double.compare方法 */ return Double.compare(salary,other.salary); } }
Comparable

如果要给String类型按长度进行排序,虽然String实现了Comparable接口,但是String.compareTo方法是按字典顺序进行排序。

我们不能修改String的源码,这时候可以使用Comparator(比较器)。

package com.sk;import java.lang.reflect.Array;import java.util.Arrays;import java.util.Comparator;public class compare implements Comparator
{ @Override public int compare(String o1, String o2) { return o1.length()-o2.length(); } public static void main(String[] args) { String [] strings={"3333","44"}; //使用此方法,对象必须实现Comparator接口 Arrays.sort(strings, new compare()); for(int x=0;x
Comparator

可以使用lambda表达式更方便地使用Comparator。

public class myLC {    public static void main(String[] args) {        String [] s={"344","444444","222222","33"};        Arrays.sort(s,(start,end)->{            return end.length()-start.length();        });        for(int x=0;x
Lambda表达式

 

转载于:https://www.cnblogs.com/shank/p/10601678.html

你可能感兴趣的文章
[转]jsbsim基础概念
查看>>
DIV和SPAN的区别
查看>>
第一次使用cnblogs
查看>>
C#语法糖之 session操作类 asp.net
查看>>
2015 Multi-University Training Contest 3
查看>>
使用Gitblit 在windows 上部署你的Git Server
查看>>
217. Contains Duplicate
查看>>
vue2.0 关于Vue实例的生命周期
查看>>
jenkins 更换主数据目录
查看>>
Silverlight中恼人的g.i.cs错误
查看>>
SQLite 数据库增删改查
查看>>
<s:iterator>的status
查看>>
C++入门--1.0输入输出
查看>>
让搭建在Github Pages上的Hexo博客可以被Google搜索到
查看>>
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十四章:曲面细分阶段...
查看>>
在WPF控件上添加Windows窗口式调整大小行为
查看>>
背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu
查看>>
打开3389
查看>>
React学习记录
查看>>
nginx常见内部参数,错误总结
查看>>