LinkedHashSet は、挿入時に要素の重複を許可しないことを理解しています。しかし、Hashset が Hava でどのように機能するのかわかりませんか? Hashset で Hashtable が使用されていることを少し知っているので、ハッシュテーブルは要素を格納するために使用され、ここでも要素の重複は許可されません。次に、ツリーセットもハッシュセットに似ており、重複するエントリを許可しないため、一意の要素が表示され、昇順に従います。
HashMap に関してもう 1 つ疑問があります。Hashmap は順序を維持しません。1 つの null キーと複数の null 値を持つ場合があります。私はこれを理解していませんが、実際にはどういう意味ですか? これの実用的な例はありますか?
私は少し知っています、ハッシュマップはこれに基づいて機能していました-バケットに入れるために使用されるキーと値もバケットに一意の番号を持っています。そのため、バケットからキーと値を識別して取得できます。キーと値のペアを、キーのハッシュコードである識別子のバケットに入れると。
例: キーのハッシュ コードは 101 であるため、バケット 101 に格納されます。1 つのバケットには、複数のキーと値のペアを格納できます。Object1 が「A」、object2 が「A」、object3 が「B」の場合、同じハッシュ コードを持っているとします。そのため、同じハッシュコードを同じバケットに共有することで、さまざまなオブジェクトを格納します。私の疑問は、同じハッシュコードを持つオブジェクトは等しくなければならず、異なるオブジェクトは異なるハッシュコードを持つべきですか?
これは HashSet を使用したプログラムです。
import java.util.*;
public class Simple{
public static void main(String[] args){
HashSet hh=new HashSet();
hh.add("D");
hh.add("A");
hh.add("B");
hh.add("C");
hh.add("a");
System.out.println("Checking the size is:"+hh.size()+"");
System.out.println(hh);
Iterator i=hh.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}
}
出力は、
Checking the size is:5
[D, A, B, a, C]
D
A
B
a
C
私の疑問は、なぜ「a」が「B」と「C」の間に挿入されているのかということです。
今、私は LinkedHashSet を使用しているので、
public class Simple{
public static void main(String[] args){
LinkedHashSet hh=new LinkedHashSet();
hh.add("D");
hh.add("A");
hh.add("B");
hh.add("C");
hh.add("a");
System.out.println("Checking the size is:"+hh.size()+"");
System.out.println(hh);
Iterator i=hh.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}
}
挿入順序に従い、要素の重複を回避することを理解しています。したがって、出力は、
Checking the size is:5
[D, A, B, C, a]
D
A
B
C
a
さて、ツリーセットを使用して:
import java.util.*;
public class Simple{
public static void main(String[] args){
TreeSet hh=new TreeSet();
hh.add("1");
hh.add("5");
hh.add("3");
hh.add("5");
hh.add("2");
hh.add("7");
System.out.println("Checking the size is:"+hh.size()+"");
System.out.println(hh);
Iterator i=hh.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}
}
ここで、私は次のことを理解しています - Treeset は昇順に従います。
The output is,
Checking the size is:5
[1, 2, 3, 5, 7]
1
2
3
5
7
それから私の疑問は、Hashset が Java でどのように機能するかということです。そして、LinkedHashset が二重にリンクされたリストに従うことを知っています。二重連結リストを使用する場合、要素をどのように格納しますか? 二重にリンクされたリストとはどういう意味で、どのように機能しますか? それでは、これら 3 つの Hashset、Treeset、LinkedHashset はすべて Java で使用され、Java でのパフォーマンスが優れているのはどれでしょうか?