美文网首页
关于Java中Compare的点点滴滴

关于Java中Compare的点点滴滴

作者: TanX | 来源:发表于2021-05-24 20:44 被阅读0次

Java中的比较方法有很多,我们来说明一下。

一.有关类自定义的比较方法

1.String的compareTo()方法

compareTo()方法用于两种方式的比较:

  1. 字符串与对象的比较
  2. 按字典顺序比较两个字符串
    语法格式:
int compareTo(Object o)                          //o -- 要比较的对象
int compareTo(String anotherString) //anotherString -- 要比较的字符串

返回值类型
返回值为整型,通过每个字符的一一比较,如果第一个字符和参数的第一个字符相等,那么第二个字符和参数做比较,依次类推,直到不等为止,返回该字符的ASCII码差值,如果两个字符串不一样长,可是对应的字符又完全一样那么返回字符串的长度差值。

  • 如果两个字符串相等,那么返回0
  • 如果此字符串小于字符串参数,那么返回小于0的数
  • 如果此字符串大于字符串参数,那么返回大于0的数

二.自定义排序类

我们知道,当我们想对集合或者数组进行排序的时候,我们有两种方法。

  1. 实现Comparator接口
  2. 实现Comparable接口
(一).实现Comparator比较器接口

Comparator位于java.util包下。

public interface Comparator<T> {
    int compare(T o1, T o2);
  //这里我怎么理解呢,我们可以把o1看成右边的元素,02看成左边的元素,
  //如果返回值 大于 0 :那么不会调换位置
  //如果返回值 等于 0 : 那么不会调换位置
  //如果返回值 小于 0 :那么调换两者位置
}

通常我们有以下的使用方法:

public class Compare {
    //定义一个内部类
    static class  ComparatorTest implements java.util.Comparator<Integer>{
        @Override
        public int compare(Integer o1, Integer o2) {
            return o1 - o2;
        }
    }
    //主测试函数
    public static void main(String[] args) {
        LinkedList<Integer> integers = new LinkedList<>();
        integers.add(1);
        integers.add(2);
        integers.add(3);
        integers.add(0);
        /*第一种写法,匿名类*/
        integers.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer t1, Integer t2) {
                return -1;
            }
        });
        /*第二种写法,lambda表达式*/
        integers.sort((o1, o2) -> o1 - o2);
        /*第三中写法,内部类*/
        integers.sort( new ComparatorTest());
        integers.stream().forEach(System.out::println);
    }
}
(二).实现Comparable比较器接口

如果想让一个类有自比较的行为,那么就可以实现这个接口从而变成可比较类,而且接口里面有一个方法需要实现,那就是compareTo方法。

class MyEntity implements Comparable<MyEntity>
{
    private int val;
    @Override
    public int compareTo(MyEntity o) {
        if(this.val < o.val)return -1;
        if(this.val > o.val)return 1;
        return 0;
    }
}

这个我们比较容易理解,我们发现前者我们通常会用的会比较多。

相关文章

网友评论

      本文标题:关于Java中Compare的点点滴滴

      本文链接:https://www.haomeiwen.com/subject/bnbvjltx.html