2011-07-09 17 views
1

私は現在Javaを使用していますので、挿入する方が効率的かどうかを知ることにもっと興味があります。それは悪い習慣であるかどうか私はまた興味がありますが。一般に、要素を挿入する前に要素がセットに含まれているかどうかを確認する必要がありますか?

+0

意味上の違いはなく、パフォーマンス上の利点をもたらす理由はありません。また、2つの冗長なコード行です。どう思いますか? – delnan

答えて

3

不要です。 APIは、それが既に存在するかどうかを知る必要がある場合に通知し、コレクションコードは非常に効率的です。自分で確認するよりも効率的です。セットもはとにかくそれををチェックされますので、

Set<Integer> set = new HashSet<Integer>(); 
boolean newAdditionToSet = set.add(1); 
System.out.println(newAdditionToSet); // true 
newAdditionToSet = set.add(1); 
System.out.println(newAdditionToSet); // false 

それは "悪い習慣" です、:

FYI、ここでのアクションでAPIです。既存の要素の作業負荷を維持しながら、新しい要素のワークロードを倍増させるだけです。

1

不要です。 Set.add()があなたをチェックします。

また、要素が追加されたかどうかに基づいてtrueまたはfalseを返します。

1

一般に、要素を挿入する方が効率的です。通常のSet実装の場合、挿入コードは、既に存在する場合は値を置き換える必要があるため、contains呼び出しの作業をほとんど複製します。だからを最初に呼び出すのはであり、一般的には時間の無駄であり、一般に悪い習慣です。

必ずしもそうではありません!あなたはセット内の既存の値を置き換えるためにaddコールをしたくない場合はcontainsを呼び出す必要があり

一つのケースがあります。この状況はときどき発生します。例えばあなたが値の束を正規化するためにセットを使用している場合。

関連する問題