java - 如何检查两个序列是否按某种顺序具有相同的值,(忽略重复项)java

标签 java arrays

这是一个由两部分组成的问题,第一个问题要求创建一个方法来检查两个序列是否具有相同顺序的相同值。

其次,我遇到的问题要求创建一个方法来检查两个序列是否按某种顺序具有相同的值,忽略重复项,即 序列 1(1、4、9、16、9、7、4、9、11) 序列 2 (11, 11, 7, 9, 16, 4, 1) 因此序列 1 仍然与序列 2 相同,因为 11、4 和 9 是重复元素

所以我添加了一个方法 public boolean equals(Sequence other) 来检查两个序列是否具有相同顺序的相同值第 1 部分,但我现在需要做的是第 2 部分检查两个序列是否具有相同的值按某种顺序,忽略重复项。

import java.util.Arrays;
public class Sequence {
    private int[] values;
    public Sequence(int size)
    {
        values = new int[size];
    }
    public void set(int i, int n)
    { 
        values[i] = n; 
    }
    public boolean equals(Sequence obj) 
    {
        if (this == obj)
        {
            return true;
        }
        if (obj == null)
        {
            return false;
        }
        if (getClass() != obj.getClass())
        {
            return false;
        }
        Sequence other = (Sequence) obj;
        if (!Arrays.equals(values, other.values))
        {
            return false;
        }
        return true;
    }
    public static void main(String args[]){
        Sequence s = new Sequence(5);
        Sequence s2 = new Sequence(5);// new Sequence(4)
        s.set(0, 1);
        s2.set(0, 1);
        System.out.println(s.equals(s2));//will print true      
    }
}

我有点困惑,我知道这就是检查重复项的方式,但这就是我所知道的,我真的不知道如何在这种情况下使用它或如何忽略重复项

for (int i = 0; i < values.length; i++) 
{ 
    for (int j = i + 1; j < other.length; j++) 
    { 
        if (values[i].equals(other[j]) ) {}
    }
}

最佳答案

较慢的方法是:遍历较小的数组,对于每个值,检查它是否包含在较大的数组中。然后反过来......所以,如果没有任何进一步的“智能”,你需要进行 n * m 比较。乘2。

更复杂的解决方案:对两个数组进行排序。然后开始依次遍历两个数组(当两个数组都已排序时,您不需要重复迭代第二个数组来确定它是否包含另一个数组中的值)。然后你只需要遍历两个数组一次(但如上所述:以某种交替的方式)。

关于java - 如何检查两个序列是否按某种顺序具有相同的值,(忽略重复项)java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50720185/

相关文章:

java - 我们可以使用java更新受密码保护的Excel工作表的行和列吗?

Java 无法为对象堆错误保留足够的空间

java - 计算两个日期的差异

C++ 指向另一个类的动态指针数组

php - 在 PHP 中使用 Facebook Graph API 获得教育

c++ - 将代码从 Eigen2 移植到 Eigen3 时的奇怪行为

java - 在 Java 赋值中使用数组和 for 循环时遇到问题

java - 安卓工作室错误 : cannot find symbol class intent

java - 从密码生成 SecretKey 并从该 Key 获取明文密码

java - 我的 Java 程序无法编译