【转】java ==、equals、compareTo、compare、sort在比较上的应用
来源:互联网 发布:linux内核态和用户态 编辑:程序博客网 时间:2024/05/28 15:28
关于java语言中的比较:
1、
==是运算符,equals、compareTo是方法。
1、
==是运算符,equals、compareTo是方法。
2、
==运算符的结果和equals方法的返回值都是 boolean型,结果有true、false两个值,用于比较两者是否相等;
comparaTo方法和compare方法的返回值是int型,结果有大于、小于、等于三种值,用于给数据排序,负数表示小于、0表示相等、正数表示大于。
4、
==是比较地址(当操作数是封装类型时),当操作数是基本数据类型时,比较两者的值;
==是比较地址(当操作数是封装类型时),当操作数是基本数据类型时,比较两者的值;
5、
equals是Object类中的方法,自定义类自动继承Object类,无需显式写出。
Object中equals方法的实现是直接用==运算符比较,即比较两者的地址。
public boolean equals(Object obj) {
return this == obj;
}
一般实际需求都是比较内容,而不是地址,所以当需要比较时,我们都会重写equals方法,在equals方法中可能又要用到hashCode方法。
八大基本数据类型的封装类型均重写了equals方法:
public boolean equals(Object obj) { // 以Integer 封装类型为例
if ( obj instanceof Integer ){ // 用 instanceof判断是否是同一数据类型,否则不相等
return this.value==((Integer) obj ).intValue(); // 拆封,直接比较基本类型数据的值
}
return false;
}
6、
comparaTo方法是Comparable接口中的方法,compare方法是Comparator接口中的方法。
两个接口定义的主要目的是一样,都是为了实现排序:Collections.sort,只是Comparable接口在类定义时就需实现,而如果类定义时没有考虑到排序问题,则需要用comparator接口扩展实现:
- public static <T extends Comparable<? super T>> void sort(List<T> list) {
- Object[] a = list.toArray();
- Arrays.sort(a);
- ListIterator<T> i = list.listIterator();
- for (int j=0; j<a.length; j++) {
- i.next();
- i.set((T)a[j]);
- }
- }
- public static <T> void sort(List<T> list,Comparator<? super T> c) {
- Object[] a = list.toArray();
- Arrays.sort(a,(Comparator)c);
- ListIterator<T> i = list.listIterator();
- for (int j=0; j<a.length; j++) {
- i.next();
- i.set((T)a[j]);
- }
- }
0 0
- 【转】java ==、equals、compareTo、compare、sort在比较上的应用
- Java中的equals(),==,compareTo()和compare()
- Java中的equals(),==,compareTo()和compare()
- Java:比较运算符compareTo()、equals()、==之间的区别与应用总结
- Java:比较运算符compareTo()、equals()、==之间的区别与应用总结 .
- Java:比较运算符compareTo()、equals()、==之间的区别与应用总结
- Java:比较运算符compareTo()、equals()、==之间的区别与应用总结
- Java:比较运算符compareTo()、equals()、==之间的区别与应用总结
- Java:比较运算符compareTo()、equals()、==之间的区别与应用总结
- 【Java基础】比较运算符compareTo()、equals()、==之间的区别与应用总结
- Java:比较运算符compareTo()、equals()、==之间的区别与应用总结
- Java:比较运算符compareTo()、equals()、==之间的区别与应用总结(转自-且听风吟-博客)
- ==, .equals(), compareTo(), and compare() (之一)
- ==, .equals(), compareTo(), and compare() (之一)
- java compareTo与compare比较
- 比较运算符compareTo()、equals()、==之间的区别与应用总结
- 比较compareTo与equals及==的区别
- 比较运算符compareTo()、equals()、==之间的区别
- 0 Appinventor编程实例
- DLL 导出C++ 类
- Java环境变量
- Java Double相加出现的怪事
- 【First step to the last one】JAVA多线程整理(二)--线程同步、休眠、终止
- 【转】java ==、equals、compareTo、compare、sort在比较上的应用
- 第五章知识结构汇总
- FLV 封装h264
- wordpress最新文章调用代码
- Servlet 工作原理解析
- JSON学习
- Easyui validatebox修改 以及自定义验证规则
- 反射+枚举实现Select下拉菜单
- Myeclipse导出jar包,spring无法扫描jar包中类以及配置文件的解决办法