以下のエディターは、HashSet について簡単に説明する Core Java 記事を提供します (推奨)。編集者はこれがとても良いものだと思ったので、皆さんの参考として今から共有します。編集者に従って、学生がこの質問を読んでいるときに見てみましょう。まず、私が 2 つの質問をします。その後、質問をしながらこの記事を読むと、全員がよりよく理解できるようになります。
1. 要素を追加するときに HashSet が重複した要素を追加できないのはなぜですか?
2. HashSet は null 要素を追加しますか? ソース コードを開くと、次のコードが表示されます。HashSet にも属性として HashMap があり、HashSet() の構築メソッドはこのマップをインスタンス化することであることがわかります。 HashMap について知らない場合は、私のこのブログ投稿を読んでください。また、静的な Final オブジェクト PRESENT があることに注意してください。これは何に使用されるのでしょうか。
private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Object(); /** * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has * default initial capacity (16) and load factor (0.75). */ public HashSet() { map = new HashMap<>(); }
/** * Adds the specified element to this set if it is not already present. * More formally, adds the specified element <tt>e</tt> to this set if * this set contains no element <tt>e2</tt> such that * <tt>(e==null ? e2==null : e.equals(e2))</tt>. * If this set already contains the element, the call leaves the set * unchanged and returns <tt>false</tt>. * * @param e element to be added to this set * @return <tt>true</tt> if this set did not already contain the specified * element */ public boolean add(E e) { return map.put(e, PRESENT)==null;
以上がCore Java の HashSet の簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。