Heim  >  Artikel  >  Java  >  Eine kurze Einführung in HashSet in Core Java

Eine kurze Einführung in HashSet in Core Java

黄舟
黄舟Original
2017-09-19 11:43:191798Durchsuche

Der folgende Editor bringt Ihnen einen Core Java-Artikel, in dem Sie kurz über HashSet sprechen (empfohlen). Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Herausgeber und werfen wir einen Blick darauf

Wenn Schüler diese Frage lesen, stelle ich zuerst zwei Fragen, und dann werden Sie es besser verstehen, wenn Sie diesen Artikel mit Fragen lesen.

1. Warum kann HashSet beim Hinzufügen von Elementen keine doppelten Elemente hinzufügen?

2. Fügt HashSet Nullelemente hinzu?

Öffnen Sie den Quellcode. Wir sehen den folgenden Code. Wir sehen, dass HashSet auch eine HashMap als Attribut hat und die Konstruktionsmethode von HashSet () darin besteht, diese Karte zu instanziieren. Wenn Sie HashMap nicht kennen, können Sie diesen Blogbeitrag von mir lesen. Beachten Sie auch, dass es ein statisches Endobjekt PRESENT gibt. Wofür wird es verwendet?


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<>();
 }

Dann öffnen wir die Add-Methode, die darin besteht, das Element e in die HashMap einzufügen und dann das statische Endobjekt PRESENT als Wert If einzufügen Wenn das Hinzufügen gelingt, gibt HashMap null zurück und das Hinzufügen wurde auch im vorherigen Blog-Beitrag noch einmal erwähnt. Wenn das Element in einer HashMap platziert wird, wird zuerst sein HashCode beurteilt. Wenn der HashCode nicht gefunden wird, wird der Index basierend auf dem HashCode berechnet und im entsprechenden Bucket platziert. Wenn der HashCode derselbe ist, erfolgt die zweite Beurteilung darauf, ob der Schlüssel gleich ist und im entsprechenden Bucket platziert wird. Er befindet sich in der verknüpften Liste.


/**
  * 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;

Natürlich haben die Schüler auch an die zweite Frage gedacht, da hashMap Nullschlüssel unterstützt, sodass HashSet auch Elemente mit Nullschlüssel hinzufügen kann. HashMap wird an so vielen Orten verwendet. Wissen Sie, wie wichtig es ist? !

Das obige ist der detaillierte Inhalt vonEine kurze Einführung in HashSet in Core Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn