0

頂点変数 equals をオーバーライドしようとしています。現在 vertexList.contains("test") が呼び出されると、頂点クラスで宣言された equals() は実行されません。足りないものはありますか?

完全なコードは、クイック テスト ファイル UI.java と共に、私のgit ハブで見つけることができます。そうでなければ、私はアイデアがありません。
ありがとう、

class Data implements Graph
{
    java.util.LinkedList<vertex> vertexList = new java.util.LinkedList<vertex>();

    class vertex
    {
        String ID;
        java.util.LinkedList<String> links = new java.util.LinkedList<String>();
        boolean tracker = false;

        public vertex(String it)
        {
            ID = it;
        }

        @Override
        public boolean equals(Object obj)
        {
            if (obj.equals(null))
                return false;
            System.err.println("OBJECT CHECK");
            String str = (String) obj;
            // return true; //To test if it's being accessed
            return str.equals(ID);
        }

        public String toString()
        {
            return ID;
        }
    }
}
4

2 に答える 2

1

実行vertexList.contains("test")すると、オブジェクトに対してequals()メソッドが実行されStringます。ターゲット オブジェクトに対してメソッドlinkedList.contains(new Vertex("a"));を実行するものを探し ています。これは、検索対象のオブジェクトがどこにあるかequals()を示すリンクリストの実装です。contains()o

        for (Entry e = header.next; e != header; e = e.next) {
            if (o.equals(e.element))
                return index;
            index++;
        }

メソッド内のa のVertex代わりに aもチェックする必要があります。それがその目的です。あるものが別のものと等しいかどうかを確認しようとする必要があります。Stringequals()Vertex

于 2013-04-15T18:22:25.497 に答える