繁体   English   中英

比较数组中的元素

[英]Comparing elements in arrays

我被困在一个数据结构类的java赋值的一个组件上,这阻止了我完成其余部分。 这是一个简单的概念,但我在实现中遗漏了一些东西。 我有一个名为list1Dynamic array list1 ,我需要将它与另一个列表( list2 )进行比较。 我有一个方法: equals(Object a)所以调用是list1.equals(list2);

我知道如何比较列表与迭代器,但如何引用list1对象来比较两者?

我不是要求你完成我的任务,只是帮助我理解这是如何工作的。

public static void main(String args[]) 
    {
        DynamicArrayOfInts list1 = new DynamicArrayOfInts();        

    }   
    public DynamicArrayOfInts() 
    {
      storage = new int[INITIAL_CAPACITY]; 
      size = 0;
    }
    public boolean equals(Object aThat) 
    { 
        if(aThat.equals(storage))
            return true;
        else    
            return false;
    } 

你应该做这样的事情:

public boolean equals(Object obj)
{
    if(obj == null) return false;
    if(obj.getClass() != DynamicArrayOfInts.class) return false;

    DynamicArrayOfInts other = (DynamicArrayOfInts) obj;

    /*compare this.storage to other.storage with the iterator
    or with simple indexing.*/
}

我想你是说你在equals方法中进行比较。 如果是这样,则需要将参数a转换为列表。 所以

public boolean equals(Object a) {
    MyList list1 = (MyList) a; 
    ...
}

MyList list1 = (MyList) a表示“将引用a视为对MyList实例的引用,并将其分配给引用list1

equals通常使用一个Object因此您可以将(几乎)任何内容传递给equals 根据具体情况,您可以做的第一件事是检查参数的类型为equals ,如果没有机会相等则返回false。

看看我在intertubes上找到的这个例子 你在他们的例子中看到的第一件事是

if ( this == aThat ) return true;
if ( !(aThat instanceof Car) ) return false;

做这样的事情可以让你快速返回,如果比较是微不足道的。 例如,一个实例与自身相等的重言式; 没有办法不可能是真的。

在equals方法中,您可以使用this运算符来代替nae list1来访问list1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM