Linked_list中的equals方法始终返回false

时间:2019-04-03 06:48:18

标签: java linked-list equals

我正在链表中创建一个equals方法,该方法将采用相同类型的链表参数。我的linkedList具有2个属性:CellNode,和往常一样,还有一个head属性。在我的CellNode中,内部有一个CellPhone对象。我遇到的问题是,此equals方法在调用CellPhone类的“更小的” equals方法时始终返回false。

我尝试创建1个链表,然后从克隆方法创建1个链表,但这也不起作用。而且我发现CellPhone的equals方法不会导致任何问题。我试图将2个CellPhone相互比较,它可以按预期工作,但是显示带有链接列表的意外结果

这是CellPhone类中的“较小” equals方法

    public boolean equals(Object obj) {
        if((obj == null) || (obj.getClass() != getClass())) {
            return false;
        } else {
            CellPhone cellObj = (CellPhone)obj;
            System.out.println(cellObj + " comparing with " + this) ;
            if ((this.getBrand() == cellObj.getBrand()) && 
               (this.getPrice() == cellObj.getPrice()) && 
               (this.getYear() == cellObj.getYear()))
            {
                System.out.println("equal");
                return true;
            } else {
                System.out.println("not equal from CellPhone object");
                return false;
            }
        }
        }

这是我在链接列表中的equals方法:

public boolean equals(CellList passed) {
        CellList other = new CellList(passed);
        if(other.size() != passed.size()) {
            return false;
        }
        CellNode index = head;
        CellNode otherIndex = other.head;
        while(index != null) {
            if(index.cell.equals(otherIndex.cell) == false) {
                System.out.println("Not equal from linkedList");
                return false;
            }
            index = index.next;
            otherIndex = otherIndex.next;
        }
        return true;
    }



我正在内部驱动程序中对此进行测试:

//testing
        CellList Alist = new CellList();
        CellList fake = new CellList();
        CellPhone c1 = new CellPhone(1119000, "SonyEricsson", 2009, 347);
        CellPhone c2 = new CellPhone(1116700, "Nokia", 2011, 500);
        Alist.addToStart(c1);
        Alist.addToStart(c2);
        //adding element for the fake list
        fake.addToStart(c1);
        fake.addToStart(c2);
        //Comparing
        System.out.println(Alist.equals(fake));

我希望结果会是正确的,因为我添加了相同的2个CellPhone对象,但实际上它是这样输出的:

[1116700: Nokia  500.0$ 2011] comparing with [1116700: Nokia  500.0$ 2011]
not equal from CellPhone object
Not equal from linkedList
false

因此,尽管所有属性都相同,但它会从CellPhone类中提示not equal行。 我在这里想念什么?谢谢

0 个答案:

没有答案