Java 自定义比较与排序方法——Comparable与Comparator的简单使用
基本数据类型的比较
除了boolean型,其他七种基本数据类型都是可以使用小于号<、大于号>等比较大小的。比如:
public class Try {
public static void main(String[] args) {
System.out.println(1 < 2);
System.out.println(23.421 > 100.5);
System.out.println(23.421f <= 100.5f);
}
}
输出结果为:
true
false
true
一些类自带的比较方法compareTo()
Java中有些类自带比较方法compareTo(). compareTo()方法的有且只有一个参数,该参数必须和使用该方法的类是同类的。以包装类和字符串类为例:
public class Try {
public static void main(String[] args) {
System.out.println(new Integer(1).compareTo(new Integer(2)));
System.out.println(new Double(100.5).compareTo(new Double(23.421)));
System.out.println(new Float(100.5).compareTo(new Float(100.5)));
System.out.println(new Long(10).compareTo(new Long(10)));
System.out.println("Java".compareTo("Java"));
System.out.println("Java".compareTo("JavaScript"));
System.out.println("Java".compareTo("Jav"));
System.out.println("Java".compareTo("Python"));
System.out.println("Java".compareTo("C++"));
System.out.println("Java".compareTo("JSP"));
}
}
输出结果为:
-1
1
0
0
0
-6
1
-6
7
14
解释一下这里的输出:
- 对于除Boolean之外的七种包装类,他们的输出结果只可能有三种:-1/1/0,分别代表小于、大于和等于。
- 对于字符串类来说,它的compareTo()方法比较复杂:
对于A.compareTo(B), 如果两个字符串完全相同,那么返回0;否则如果A是B的前缀,那么返回值是负数,绝对值是二者长度之差;否则如果B是A的前缀,则返回值是正数,绝对值也是二者