私が書いたNodeというクラスがあります。 Nodeの2つのフィールド(私のhashCode()関数に影響を与えない3番目のフィールドもあります)を考慮に入れて、hashCode()関数をオーバーライドします。私は3つのフィールドをすべて考慮するequals()関数も書きました。Java Hashtableクラス - これは私の思うように動作しますか?特定の質問が含まれています
私は、新しいノードがハッシュテーブル内のものと重複しているかどうかを、新しいノードを作成するときに簡単に確認できるように、Hashtableクラスを使ってノードを格納しようとしています。これまでのところ私はこの
Hashtable<Node,Node> hashTbl = new Hashtable<Node,Node>();
...
Node node1 = // some new node
hashTbl.put(node1,node1);
...
はだから今、私がnode1とまったく同じハッシュ値を持っていますが、等号()メソッドで定義されたノード1に等しくないnode2という新しいノードを作ると言っています。私はnode2がハッシュテーブル内の何かの重複(それではない)かどうかをチェックしたいが、もし私がconstainsKey()を使うなら、それは私に偽陽性を与えないだろうか? containsValue()を使うことは、ハッシュテーブルの効率を利用していないようです。だから私はこれをいかに効率的に行うことができますか?
また、私はhashTbl.put(arg1、arg2)を呼び出すと、arg1のhashCode()関数を呼び出し、その値を使ってarg2を配置する「配列」内のインデックスを探します。この権利?
ご迷惑をおかけして申し訳ありません。誰にもありがとう。