Java 里的Comparator接口里的compare方法怎么确定升降序的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 里的Comparator接口里的compare方法怎么确定升降序的?相关的知识,希望对你有一定的参考价值。

怎么确定升降序的?根据返回值还是什么?
比如接口里的方法 public int compar(Object object1, Object object2)
String a = (String) object1;
String b = (String) object2;
return a>b;

此时是升序,还是降序?怎么确定的?

参考技术A 不是要用return a.compareTo(b);进行比较的吗?compareTo()方法是在String类下面的

Compares two strings lexicographically. The comparison is based on the Unicode
value of each character in the strings. The character sequence represented by
this String object is compared lexicographically to the character
sequence represented by the argument string. The result is a negative integer if
this String object lexicographically precedes the argument string.
The result is a positive integer if this String object
lexicographically follows the argument string. The result is zero if the strings
are equal; compareTo returns 0 exactly when the equals(Object) method would return true.
参考技术B sort会自动调用哪个compare方法,如果他没有实现,则无法排序,也就是顺序是混乱的。

另一方面,你指定了comp方法,则系统在每次需要比较时,都把2个对象传到里面,注意compareabel的参数是 (Object o1,Object o2)

也就是默认是Object类型的,里面怎么比较和类型判断是程序员的事情

当然你也可以启用泛型,指定compare的对象类型。本回答被提问者采纳
参考技术C 自定义排序方法

java里的interface接口类怎么用?

参考技术A

Java不支持多重继承,即一个类只能有一个父类
为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口
接口是抽象方法和常量值定义的集合,是一种特殊的抽象类
接口中只包含常量和方法的定义,没有变量和方法的实现
接口中的所有方法都是抽象的
接口中成员的访问类型都是public
接口中的变量默认使用public static final标识(可以在定义的时候不加此修饰,系统默认)
接口通过使用关键字interface来声明
格式:interface 接口的名字

1, 实例方法与引用变量实际引用的对象的方法绑定,这种绑定属于动态绑定,因为是在运行时由Java虚拟机
动态决定的
2, 静态方法与引用变量所声明的类型的方法绑定,这种绑定属于静态绑定,因为实际上是在编译阶段就已经
绑定
3, 成员变量(静态变量,实例变量)与引用变量所声明的类型的成员变量绑定,这种绑定属于静态绑定,因为
实际上是在编译阶段就已经绑定

以上是关于Java 里的Comparator接口里的compare方法怎么确定升降序的?的主要内容,如果未能解决你的问题,请参考以下文章

错误记录Java 中 ArrayList 排序 ( 使用 Comparator 接口时注意 compare 返回值是 -1 和 +1 )

接口,Comparable和Comparator

java中怎么 对数组里的 元素 按出现的顺序排序

java Comparator.compare(T o1,To2) 返回负整数、正整数的意义

java里的List<T>接口里的subList方法,API没看懂

java里的interface接口类怎么用