zz java compare 接口
public interface Comparable<T> {public int compareTo(T o); }
类
|
排序
|
BigDecimal,BigInteger,Byte,Double, Float,Integer,Long,Short
|
按数字大小排序
|
Character
|
按 Unicode 值的数字大小排序
|
String
|
按字符串中字符 Unicode 值排序
|
1 Person.java 2 package com.zj.sort.comparable; 3 4 public class Person implements Comparable<Person> { 5 private int age ; 6 private String name ; 7 8 public Person( int age, String name) { 9 this . age = age; 10 this . name = name; 11 } 12 13 public int compareTo(Person person) { 14 int cop = age - person.getAge(); 15 if (cop != 0) 16 return cop; 17 else 18 return name .compareTo(person. name ); 19 } 20 21 public int getAge() { 22 return age ; 23 } 24 25 public String getName() { 26 return name ; 27 } 28 29 public int hashCode() { 30 int result = 17; 31 result = 37 * result + age ; 32 result = 37 * result + name .hashCode(); 33 return result; 34 } 35 36 public boolean equals(Object o) { 37 if (!(o instanceof Person)) 38 return false ; 39 Person person = (Person) o; 40 return ( age == person. age ) && ( name .equals(person. name )); 41 } 42 43 public String toString() { 44 return ( age + "{" + name + "}" ); 45 } 46 }
import java.util.Arrays; import com.zj.compare.Person;public class ArraysSortUnit {public static void main(String[] args) {Person[] ps = { new Person(20, "Tom" ), new Person(20, "Jeff" ),new Person(30, "Mary" ), new Person(20, "Ada" ),new Person(40, "Walton" ), new Person(61, "Peter" ),new Person(20, "Bush" ) };System. out .println(Arrays.toString (ps));Arrays.sort (ps);System. out .println(Arrays.toString (ps));} }
2.2 测试 Collections.sort ()方法 CollctionsSortUnit.java package com.zj.sort.comparable; import java.util.Arrays; import java.util.Collections; import com.zj.compare.Person;public class CollctionsSortUnit {public static void main(String[] args) {Person[] ps = { new Person(20, "Tom" ), new Person(20, "Jeff" ),new Person(30, "Mary" ), new Person(20, "Ada" ),new Person(40, "Walton" ), new Person(61, "Peter" ),new Person(20, "Bush" ) };System. out .println(Arrays.toString (ps));Collections.sort (Arrays.asList (ps));System. out .println(Arrays.toString (ps));} } 结果: [20{Tom}, 20{Jeff}, 30{Mary}, 20{Ada}, 40{Walton}, 61{Peter}, 20{Bush}] [20{Ada}, 20{Bush}, 20{Jeff}, 20{Tom}, 30{Mary}, 40{Walton}, 61{Peter}] 2.3 测试 TreeSet TreeSetUnit.java package com.zj.sort.comparable; import java.util.TreeSet; import com.zj.compare.Person;public class TreeSetUnit {public static void main(String[] args) {TreeSet<Person> set = new TreeSet<Person>();set.add( new Person(20, "Tom" ));set.add( new Person(20, "Jeff" ));set.add( new Person(30, "Mary" ));set.add( new Person(20, "Ada" ));set.add( new Person(40, "Walton" ));set.add( new Person(61, "Peter" ));set.add( new Person(20, "Bush" ));System. out .println(set);} } 结果: [20{Ada}, 20{Bush}, 20{Jeff}, 20{Tom}, 30{Mary}, 40{Walton}, 61{Peter}] 2.4 测试 TreeMap TreeMapUnit.java package com.zj.sort.comparable; import java.util.TreeMap; import com.zj.compare.Person;public class TreeMapUnit {public static void main(String[] args) {TreeMap<Person, String> map = new TreeMap<Person, String>();map.put( new Person(20, "Tom" ), "Tom" );map.put( new Person(20, "Jeff" ), "Jeff" );map.put( new Person(30, "Mary" ), "Mary" );map.put( new Person(20, "Ada" ), "Ada" );map.put( new Person(40, "Walton" ), "Walton" );map.put( new Person(61, "Peter" ), "Peter" );map.put( new Person(20, "Bush" ), "Bush" );System. out .println(map);} } 结果: {20{Ada}=Ada, 20{Bush}=Bush, 20{Jeff}=Jeff, 20{Tom}=Tom, 30{Mary}=Mary, 40{Walton}=Walton, 61{Peter}=Peter}
zz java compare 接口相关推荐
- java compare接口_javaCompare接口及泛型
一.Compare接口 要对一个类的两个对象进行排序可以调用sort方法,但是如果一个类想要自己定义排序的方式就需要实现Compare接口.java.lang.Compare,具体的见API文档.只有 ...
- Java Comparator接口
Java Comparator接口 代码演示 演示1. package Practice;import java.util.ArrayList;import java.util.Collections ...
- java 清空控制台_利用原生库和JNI(Java原生接口)实现H2数据库漏洞利用
在H2数据库引擎中获取代码执行权限的技术早已是众所周知,但有个要求就是H2能够动态编译Java代码.而本文将向大家展示以前没有公开过的利用H2的方法,并且无需使用Java编译器,即通过原生库和JNI( ...
- java多线程查询_利用Java函数式接口处理多线程查询
Java函数式接口 有且只有一个抽象方法的接口被称为函数式接口. @FunctionalInterface注解: 该注解可用于一个接口的定义上, 一旦使用该注解来定义接口, 编译器将会强制检查该接口是 ...
- java滥用接口_吐槽一下项目中的代码坏味道:滥用java常量
我们的项目中是否充斥着类似以下的代码呢?定义一个专门存放常量的java类(接口),非常多其它类依赖该常量类. public interface IConstant { int ZERO = 0; St ...
- java接口与类相同不同_浅谈java的接口和C++虚类的相同和不同之处
C++虚类相当于java中的抽象类,与接口的不同之处是: 1.一个子类只能继承一个抽象类(虚类),但能实现多个接口 2.一个抽象类可以有构造方法,接口没有构造方法 3.一个抽象类中的方法不一定是抽象方 ...
- java类接口的区别_【Java基础】java接口和类的区别-瑶瑶吖的回答
基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为 ...
- java 实现接口后重写方法报错
java 实现接口后重写方法报错 java 实现接口后重写方法报错 The method contextDestroyed(ServletContextEvent) of type InitListe ...
- Java 利用接口实现回调
在 Java 支持方法指针之前,Java 接口不能提供一种实现回调的好方法.如果您习惯于传递在事件驱动编程模型中调用的函数指针,则您会喜欢本技巧. 熟悉 MS-Windows 和 X Window ...
- java一个接口执行结束释放内存_java的灵魂--JVM虚拟机
JVM是运行在操作系统之上的,它与硬件没有直接的交互 JVM体系结构 1.类加载器 负责加载class文件,class文件在文件开头有特定的文件标示, 并且ClassLoader只负责class文件的 ...
最新文章
- Python 爬取图片链接并且解析
- python中是干嘛的-学 Python 都用来干嘛的?
- BZOJ-1880-Elaxia的路线-SDOI2009-SPFA+拓扑排序
- cisco 交换机vlan-trunk的配置详解及应用实例:
- springboot工程的热部署
- php 邮箱开发教程,php开发中表单验证邮箱及URL的教程
- MacOS Apple M1 安装ARM架构的JDK及动态切换版本
- 一文了解Docker核心概念和安装配置
- 怎么将短连接修改为长连接_回音壁怎么选?Redmi这个还不错
- xpath以某个字符开始_XPATH简单使用
- linux 隐藏显示终端光标
- 最全面详细讲解Oracle入门(新手必看)
- 网吧服务器ip地址修改,BXP服务器下的网吧ip地址怎么更改
- android sim卡pin,如何设置手机的SIM卡的PIN码?
- uniapp 跳转到商品详情页
- 从零开始- Android刷机指南一
- 学人工智能以后去哪里工作?学AI可以做什么?
- 苹果新专利:用AR眼镜来控制iPhone屏幕输出,保护隐私
- 如何理解信息隐藏和局部化?
- 「kd指标」kd指标原理