簡體   English   中英

覆蓋Arrylist中的indexOf等於

[英]Override Equals for indexOf in Arrylist

import java.util.*; 

public class CustomList<E> extends ArrayList<E> {
    public boolean equals(Object b) {
        if (b instanceof Node) {
            Node other = (Node) b; 
            return this.getKey().equals(other.getKey());
        }

        return false; 
    }
}

我正在嘗試更改cumstomList的indexOf,所以我想重寫equals方法,以便它將只為我比較鍵。

但是,上面的代碼生成錯誤,提示“ this.getKey”找不到符號。因此,我想知道如果我想比較Node的鍵應該返回什么?

另一個問題,為什么我不能在CustomList“ E”和ArrayList“ E”中放置“ Node”?

=====我的意思是,如果我有一個Node類型的arrayList,並且我想通過它的鍵獲取一個Node的indexOf,我可以覆蓋等於,以便indexOf只為我比較該鍵嗎?

自定義列表中的Equals方法應將list的實例作為參數而不是Node類型。 您必須在Node類的equals方法中執行此操作。

如果要比較Node中的值,對於Node類,正確的實現是這樣的:

class Node<T extends Comparable<T>>

如果希望每個節點都連接到其他節點,則可以將以下對象作為每個節點的屬性:

private T val;
private ArrayList<Node<T>> children;

如果需要遍歷連接的節點,則可以使用一個單獨的類來跟蹤頭節點並將其實現為迭代器:

class Tree<T extends Comparable<T>> implements Iterable<Node> {
    private Node<T> rootNode;
    private int numNodes;
}

然后,您將能夠使用Tree類輕松地遍歷您的Node以找到您要尋找的Node的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM