Java 比较对象数组的元素

Java 比较对象数组的元素,java,arrays,object,Java,Arrays,Object,假设我有一个叫做“Sequence”的类。此类有一个实例变量private int[]tab。 还有一些方法可以创建此选项卡,如下所示: public Sequence() { this.tab = fillAnArray(drawsNumber(5, 20)); } private int drawsNumber(int min, int max) { if (min > max) { throw new IllegalArgumentException

假设我有一个叫做“Sequence”的类。此类有一个实例变量
private int[]tab
。 还有一些方法可以创建此选项卡,如下所示:

public Sequence() {
    this.tab = fillAnArray(drawsNumber(5, 20));
}

private int drawsNumber(int min, int max) {
    if (min > max) {
        throw new IllegalArgumentException("Wrong range");
    }
    return new Random().nextInt(max - min + 1) + min;
}

public int[] fillAnArray(int size) {
    int[] arr = new int[size];
    arr[0] = 1;
    for (int i = 1; i < arr.length; i++) {
        arr[i] = drawsNumber(arr[i - 1], arr[i - 1] + 10);
    }
    return arr;
}
公共序列(){
this.tab=fillAnArray(图纸编号(5,20));
}
专用整数绘图编号(整数最小值、整数最大值){
如果(最小值>最大值){
抛出新的IllegalArgumentException(“错误范围”);
}
返回新的Random().nextInt(max-min+1)+min;
}
公共整数[]fillAnArray(整数大小){
int[]arr=新的int[size];
arr[0]=1;
对于(int i=1;i
现在,我想创建一个方法,该方法接受两个序列对象作为参数,并返回相同tab元素的数量。因此,我创建了如下方法:

public int howManyCommonElements(Sequence c1, Sequence c2) {
    int i = 0, j = 0;
    int counter = 0;
    while (i < c1.tab.length && j < c2.tab.length) {
        if (c1.tab[i] == c2.tab[j]) {
            ++counter;
        } else if (c1.tab[i] < c2.tab[j]) {
            ++i;
        } else {
            ++j;
        }
    }
    return counter;
}
public int howmanycommonements(序列c1、序列c2){
int i=0,j=0;
int计数器=0;
而(i

如何比较单个元素,如
c1.tab[I]
c2.tab[j]

必须将第一个数组的每个元素与第二个数组的每个元素进行比较。为此,必须使用2个嵌套循环:

for (int i = 0; i < c1.tab.length; i++)
    for (int j = 0; j < c2.tab.length; j++)
        if (c1.tab[i] == c2.tab[j])
            ++counter;
for(int i=0;i
如果您有有序元素(ASC),您可以这样做

    int i = 0, j = 0;
    int counter = 0;
    while (i < arr1.length && j < arr2.length) {
        if (arr1[i] == arr2[j]) {
            ++i;
            ++j;
            ++counter;
        } else if (arr1[i] < arr2[j]) {
            ++i;
        } else {
            ++j;
        }
    }
inti=0,j=0;
int计数器=0;
而(i
你不知道如何比较是什么意思?
c1.tab[i]==c2.tab[j]
有什么问题?顺便说一句,这是你们代码中的错误,若标签有公共元素,你们的循环将永远不会结束。哎哟,我只是试着使用一些不同于for循环的东西。你是对的,我不知道我怎么看不出这个问题。这回答了你的问题吗?可以用列表代替整数数组吗?不,元素是有序的,你不需要用现有的
O(n+m)
来排序元素。。。Idk,如果你注意到了,但是OP从评论中解决了问题,甚至在这里添加答案之前。