Inhaltsverzeichnis
Hashtable
ConcurrentJava-Interview – Datenstruktur
LinkedJava-Interview – Datenstruktur, TreeMap, TreeSet
ArrayList, LinkedList, Vector
Sammlung und Sammlungen
Binärbaum
Gemeinsame Binärbaumkonzepte
Heim Java JavaInterview Fragen Java-Interview – Datenstruktur

Java-Interview – Datenstruktur

Nov 25, 2020 pm 03:57 PM
java 数据结构 面试

Java-Interview – Datenstruktur

Zu den gängigen Datenstrukturen gehören: Java-Interview – Datenstruktur, Hashtable, ConcurrentJava-Interview – Datenstruktur.

(Verwandte Videofreigabe: Java-Lehrvideo)

Lassen Sie uns sie separat vorstellen:

Java-Interview – Datenstruktur

  • Zugrunde liegende Implementierung: Die zugrunde liegende Gesamtstruktur von Java-Interview – Datenstruktur ist ein Array und jedes Element im Array Eine weitere verlinkte Liste. Jedes Mal, wenn ein Objekt (Put) hinzugefügt wird, wird ein verknüpftes Listenobjekt (Objekttyp) generiert. Jeder Eintrag in der Karte ist ein Element im Array (Map.Entry ist ein <key>). code> ), der einen Verweis vom aktuellen Element auf das nächste Element enthält, das eine verknüpfte Liste bildet. </key>
  • <key></key>),它具有由当前元素指向下一个元素的引用,这就构成了链表。
  • 存储原理:当向HsahMap中添加元素的时候,首先计算Key对象的Hash值,得到数组下标,如果数组该位置为空则插入,否则遍历这个位置链表。当某个节点Key对象和Node对象均和新元素的equals时,用新元素的Value对象替换该节点的Value对象,否则插入新节点。(注意:JDK 8之后加入了红黑树)

Java-Interview – Datenstruktur长度为2的n次幂是为了让length-1的二进制值所有位全为1,这种情况下,hash值与(table.length - 1)进行&运算计算index时,其结果就等同于hashcode后几位的值,此时只要输入的hashcode本身分布均匀,Hash算法的结果就是均匀的。所以,Java-Interview – Datenstruktur的默认长度为16是为了降低hash碰撞的几率,同时也是一种合适的大小。

Java-Interview – Datenstruktur

Hashtable

Hinweis: Rot-Schwarz-Bäume wurden nach JDK 8 hinzugefügt)
Die Länge von Java-Interview – Datenstruktur beträgt 2 hoch n, um alle Bits des Binärwerts von zu bilden Länge-1 ist gleich 1. Wenn in diesem Fall der Hash-Wert mit (table.length - 1) kombiniert wird, um den Index zu berechnen, ist das Ergebnis zu diesem Zeitpunkt gleich dem Wert der letzten paar Ziffern des Hashcodes Solange der Eingabe-Hashcode selbst gleichmäßig verteilt ist, ist das Ergebnis des Hash-Algorithmus einheitlich. Daher beträgt die Standardlänge von Java-Interview – Datenstruktur 16, um die Wahrscheinlichkeit einer Hash-Kollision zu verringern, und hat auch eine geeignete Größe. Java-Interview – Datenstruktur
比较点 Java-Interview – Datenstruktur Hashtable
实现原理 见上小节 和Java-Interview – Datenstruktur的实现原理几乎一样
Key和Value 允许Key和Value为null 不允许Key和Value为null
扩容策略 2倍扩容oldThr 2倍+1扩容(oldCapacity Speicherprinzip: Berechnen Sie beim Hinzufügen von Elementen zu HsahMap zuerst den Hash-Wert des Schlüsselobjekts und rufen Sie den Array-Index ab. Wenn die Array-Position leer ist, fügen Sie ihn ein, andernfalls durchlaufen Sie die verknüpfte Liste an dieser Position. Wenn das Schlüsselobjekt und das Knotenobjekt eines Knotens beide gleich dem neuen Element sind, ersetzen Sie das Wertobjekt des Knotens durch das Wertobjekt des neuen Elements. Andernfalls fügen Sie einen neuen Knoten ein. (

Hashtable

ImplementierungsprinzipSiehe den obigen Abschnitt
Vergleichspunkt Java-Interview – Datenstruktur Hashtable
🎜 Das Implementierungsprinzip von Java-Interview – Datenstruktur ist fast das gleiche >oldThr 🎜🎜2 mal + 1 Erweiterung(oldCapacity 🎜🎜🎜🎜Sicherheit🎜🎜Thread-unsicher🎜🎜Thread-sicher 🎜🎜🎜🎜<blockquote><p>Die Implementierung der Hashtable-Thread-Sicherheitsstrategie ist sehr kostspielig. Alle zugehörigen Get/Put-Vorgänge sind synchronisiert und die Leistung ist in stark umkämpften Parallelitätsszenarien sehr schlecht. </p></blockquote> <h3 id="ConcurrentJava-Interview-Datenstruktur">ConcurrentJava-Interview – Datenstruktur</h3> <p>ConcurrentJava-Interview – Datenstruktur ist eine threadsichere und effiziente Java-Interview – Datenstruktur-Implementierung, die im Java-Parallelitätspaket bereitgestellt wird. Sie verwendet eine sehr ausgefeilte <strong>Segmentsperre</strong>-Strategie. Das Segment erbt von ReentrantLock und ist eine Wiedereintrittssperre. Jedes Segment ist eine Sub-Hash-Tabelle, und im Segment wird ein HashEntry-Array verwaltet. In einer gleichzeitigen Umgebung muss bei der Verarbeitung von Daten aus verschiedenen Segmenten keine Sperrkonkurrenz berücksichtigt werden. </p> <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/041/936426dca161c51f1aba61a5982011b4-1.png" class="lazy" alt="ConcurrentJava-Interview – Datenstruktur"></p> <h2 id="LinkedJava-Interview-Datenstruktur-TreeMap-TreeSet">LinkedJava-Interview – Datenstruktur, TreeMap, TreeSet</h2> <ul> <li>LinkedJava-Interview – Datenstruktur: Sequentielle Zugriffs-Java-Interview – Datenstruktur (basierend auf Array- und doppelt verknüpfter Listenimplementierung). </li> <li>TreeMap: Interne Sortierung (basierend auf der Rot-Schwarz-Baum-Implementierung). </li> <li>TreeSet: Sammlung geordneter Mengen (basierend auf der Binärbaumimplementierung). </li> </ul> <h2 id="ArrayList-LinkedList-Vector">ArrayList, LinkedList, Vector</h2> <ul> <li>ArrayList: dynamisches Array (basierend auf der Array-Implementierung). </li> <li>LinkedList: geordnetes Array (implementiert basierend auf einer doppelt verknüpften Liste). </li> <li>Vektor: Objektcontainer, der Objekte unterschiedlichen Typs ablegen kann (implementiert basierend auf Arrays). </li> </ul> <h2 id="Sammlung-und-Sammlungen">Sammlung und Sammlungen</h2> <ul> <li>Sammlung: Die übergeordnete Schnittstelle der Sammlungsklasse und die Unterschnittstellen umfassen hauptsächlich Liste, Satz, Warteschlange usw. </li> <li>Sammlungen: Stellt Werkzeugklassen zum Suchen, Sortieren, Ersetzen und Thread-Sicherheitsoperationen für Sammlungen bereit. </li> </ul> <p> (Weitere verwandte Empfehlungen für Interviewfragen: <a href="https://www.php.cn/java/interview/" target="_blank">Java-Interviewfragen und -antworten</a>) </p> <h1 id="Binärbaum">Binärbaum</h1> <h2 id="Gemeinsame-Binärbaumkonzepte">Gemeinsame Binärbaumkonzepte</h2> <ul> <li><p>B+-Baum: Siehe Datenbankabschnitt<em>https://blog.csdn.net/ u012102104/ Artikel/Details/79773362</em></p></li> <li><p>Ausgeglichener Binärbaum (AVL-Baum): Der absolute Wert der Tiefendifferenz zwischen dem linken und rechten Teilbaum jedes Knotens überschreitet nicht 1. </p></li> <li><p>Huffman-Baum: Der Binärbaum mit der kleinsten gewichteten Pfadlänge wird als optimaler Binärbaum bezeichnet. Die Huffman-Baumkonstruktion ist nicht eindeutig, aber die Summe der gewichteten Pfadlängen aller Blattknoten ist die kleinste. </p></li> <li> <p>Rot-Schwarz-Baum: Ein selbstausgleichender binärer Suchbaum, seine Eigenschaften sind: </p> <ol> <li>Knoten sind rot oder schwarz. </li> <li>Der Wurzelknoten ist schwarz. </li> <li>Jeder Blattknoten ist ein schwarzer leerer Knoten (NIL-Knoten). </li> <li>Die beiden untergeordneten Knoten jedes roten Knotens sind schwarz. </li> <li>Alle Pfade von jedem Knoten zu jedem seiner Blätter enthalten die gleiche Anzahl schwarzer Knoten. </li> </ol> <blockquote><p>Auf allen Pfaden von jedem Blatt zur Wurzel dürfen nicht zwei aufeinanderfolgende rote Knoten vorhanden sein</p></blockquote> </li> </ul>

Das obige ist der detaillierte Inhalt vonJava-Interview – Datenstruktur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Gestalten Sie die Zukunft: Java-Programmierung für absolute Anfänger Gestalten Sie die Zukunft: Java-Programmierung für absolute Anfänger Oct 13, 2024 pm 01:32 PM

Java ist eine beliebte Programmiersprache, die sowohl von Anfängern als auch von erfahrenen Entwicklern erlernt werden kann. Dieses Tutorial beginnt mit grundlegenden Konzepten und geht dann weiter zu fortgeschrittenen Themen. Nach der Installation des Java Development Kit können Sie das Programmieren üben, indem Sie ein einfaches „Hello, World!“-Programm erstellen. Nachdem Sie den Code verstanden haben, verwenden Sie die Eingabeaufforderung, um das Programm zu kompilieren und auszuführen. Auf der Konsole wird „Hello, World!“ ausgegeben. Mit dem Erlernen von Java beginnt Ihre Programmierreise, und wenn Sie Ihre Kenntnisse vertiefen, können Sie komplexere Anwendungen erstellen.

Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

See all articles