java比较,java比较器comparator

发布时间:2023-01-09

本文目录一览:

  1. 在Java中用于比较的类和方法有哪些?
  2. java怎么比较两个list是否相同?
  3. 用java如何比较两个字符的不同?
  4. java中的字符串比较方法

在Java中用于比较的类和方法有哪些?

对于 Class A; Class B 两个类,比较它们有两种方式:

  • A == B:比较内存地址。
  • A.equals(B):默认比较 hashcode。 第一种方式一般达不到我们想要的效果,所以一般选择覆盖类的 equals 方法来实现比较类。 一般比较两个类,会比较是不是同一种类,类里的私有变量是否相等,具体看你的逻辑要求。

java怎么比较两个list是否相同?

判断两个 list 集合的元素个数是否相等。如果不相等则两个 list 集合也不相等,判断结束;如果相等则进入第二步判断。 判断 list1 的元素是否全部在 list2 中。遍历 list1,取出其中的元素,依次去 list2 中比较是否存在该元素。如果有任何一个 list1 中的元素在 list2 中不存在,则两个 list 集合不相等;如果全部存在,则两个 list 集合相等。 这里需要说明一点:因为第一步中已经判断 list1list2 的元素个数是相等的,所以第二步中如果 list1 的元素全部在 list2 中,则可以证明 list1list2 相等。不需要再遍历 list2 中的元素去判断是否存在。 以下是上述过程的 Java 代码示例:

public boolean equalList(List list1, List list2) {
    if (list1.size() != list2.size())
        return false;
    for (Object object : list1) {
        if (!list2.contains(object))
            return false;
    }
    return true;
}

还可以使用 Java 提供的 containsAll 方法简化代码:

public boolean equalList(List list1, List list2) {
    return (list1.size() == list2.size()) && list1.containsAll(list2);
}

Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于 PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 Java 由以下四部分组成:

  • Java 编程语言,即语法。
  • Java 文件格式,即各种文件夹、文件的后缀。
  • Java 虚拟机 (JVM),即处理 .class 文件的解释器。
  • Java 应用程序接口 (Java API)。

用java如何比较两个字符的不同?

答案 A:

  • 序号:1 2 3 4
  • 数组:a a a b
  • next:0 1 2 3 注意上边序号、数组和 next 的对应关系。 求 next 值的过程:
  • 前两位:next 数组值前两位一定为 0 和 1,即 aaab 中的前两位 aa 对应 0 和 1,如上表中 next 第 1、2 位为 0 和 1。其实这就可以选出答案了。
  • 第三位:3a 前面是 2a(2a 表示序号为 2 的 a),2a 的 next 数组值为 1,找到序号为 1 的字符,即 1a,将 2a 和 1a 相比,两者相同,都是 a,则 3a 的 next 值为 2a 的 next 值加 1,即 2。
  • 第四位:4b 前 3a 的 next 为 2,找到序号为 2 的字符,即 2a,将 3a 与 2a 相比,二者相同,则其 next 值为 3a 的 next 加 1,为 3。 结果为 0123,选 A。 如果比较的时候碰到与前一位字符“不同”怎么办?例如求下列序号 4 的 next 值:
  • 序号:1 2 3 4
  • 数组:a a b a
  • next:0 1 2 1 以前一位的 next 值为序号,找到这个序号对应的字符,再进行比较。4a 前一位是 3b,next 值为 2,找到序号 2 对应的 2a,比较 3b 和 2a,两者不同,再重复这一步骤,找到 2a 的 next 值是 1,比较 3b 和 1a,不同,那么所求的 4a 的 next 就是 1;如果相同就是 2a 的 next 值加 1,为 2。 做个练习:xyxyyxxyx,求它的 next 数组? 答案是 011231223,你做对了吗?

java中的字符串比较方法

Java 中的字符串比较方法:

  1. string1.equals(string2)
  2. str1 == str2 Java 中字符串的比较是 == 比较引用,equals 比较值的做法。但是不同的声明方法字符串的比较结果也是不同的。 例如:
String str1 = new String("a");
String str2 = new String("a");
System.out.println(str1 == str2); // 输出 false
System.out.println(str1.equals(str2)); // 输出 true

而如果这样声明:

String str1 = "a";
String str2 = "a";
System.out.println(str1 == str2); // 输出 true
System.out.println(str1.equals(str2)); // 输出 true

这是因为 equals 方法本来也是比较引用的,字符串类在实现的时候重写了该方法。 第一种声明方法等于是声明了两个对象,用 == 比较的时候比较的是引用,输出的是 false;由于它们的值相同,用 equals 的时候就比较的是值,输出 true。 第二种情况不是因为比较与第一种有差异,而是因为声明方式不同。第二种声明方法在声明的时候有堆或堆栈共用的现象,也就是说在声明的时候如果声明为类属性,会检查在堆栈中有没有与现在声明的相同结构的字符串。如果有就直接将地址指向已有内存地址。声明在方法内部的局部变量原理一样,只不过它是堆栈共享。