2017-03-29 11 views
0

配列内の特定のオブジェクト/データへのアクセスの平均複雑度はO(n)です。ここでnは配列の長さです。 HashSet for Javaで要素を検索する場合は、O(1)ですか?HashSet - HashSet O(1)でオブジェクトにアクセスしていますか?

HashSet<String> set=new HashSet<String>(); 
...... 
System.out.print(set.contains(Some_string); 

contains(String)はO(1)で実行されますか?

+1

ハッシング技術を使用しているため、短いです。 – SMA

+0

理想化されたハッシュセットはO(1) – MeBigFatGuy

+1

[java-standard-data-structures-big-o-notation /](https://simplenotions.wordpress.com/2009/05/13/java-standard-data-structures)です。 -big-o-notation /) – HDJEMAI

答えて

2

はい。基本的な操作(add、remove、contains、およびsize)は一定の時間内に実行されます。

http://docs.oracle.com/javase/8/docs/api/java/util/HashSet.html

+0

サフィックスを省略しました。「ハッシュ関数がバケット間で要素を適切に分散していると仮定します。実際、この仮定は一般的なケースでは間違っています。 – CoronA

1

はい、HashSetの内の要素にアクセスして見つけることはO(1)です。

ハッシュセットは、ハッシュ技術を使用して要素を格納します。 HashSetのもう1つの重要な特性は、ユニークな要素だけを含んでいることです。例えば、要素が既にHashSetに存在するかどうかを調べることができます。

HashSet<Integer> hs = new HashSet<String(); 
if(hs.add(10) == false) { 
    //do something 
}