


Explication détaillée de l'exemple de code pour la collection Map in Java
Comme indiqué ci-dessus :
(1) Map est une interface de cartographie , et le contenu stocké dans Map est une paire clé-valeur (clé-valeur)
( 2) AbstractMap est La classe abstraite, qui hérite de de Map, implémente la plupart des API de Map.
(3) SortedMap est une interface héritée de Map Le contenu de SortedMap est trié par paires clé-valeur et la méthode de tri se fait via un comparateur.
(4) NavigableMap hérite de SortedMap, qui possède une série de méthodes de navigation, telles que "Obtenir des paires clé-valeur supérieures ou égales à un certain objet " et ainsi de suite
(5) TreeMap hérite des interfaces AbstractMap et NavigableMap, de sorte que le contenu de TreeMap est constitué de paires clé-valeur ordonnées.
(6) HashMap hérite de AbstractMap, et le contenu est également une paire clé-valeur, mais l'ordre n'est pas garanti.
(7) WeakHashMap hérite de AbstractMap, et son type de clé est différent de HashMap qui est une clé faible.
(8) HashTable hérite de Directionary et implémente également Map, il s'agit donc d'une paire clé-valeur, mais l'ordre n'est pas garanti et il est thread-safe.
Résumé :
HashMap est une table de hachage basée sur la "méthode zipper". Elle est généralement utilisée dans des threads uniques. Les valeurs de clépeuvent être vides et prennent en charge Iterator (itérateur). ) traversal
Hashtable est une table de hachage implémentée sur la base de la "méthode zipper". Elle est thread-safe et peut être utilisée dans des programmes multithread. Prend en charge deux méthodes de parcours : le parcours d'itérateur et l'énumération.
WeakHashMap est également une table de hachage basée sur la "méthode zip" et est également une clé faible
TreeMap est une table de hachage ordonnée, implémentée via un arbre rouge-noir, et la valeur clé ne peut pas être vide.
Code source de l'interface Map de Java8 :
<p>public interface Map<K,V> {<br> int size();//数目<br> boolean isEmpty();//判断是否为空<br> boolean containsKey(<a href="http://www.php.cn/wiki/60.html" target="_blank">Object</a> key);//判断是否含有某个key<br> boolean containsValue(Object value);//判断是否含有某个值<br> V get(Object key);//通过key获得value<br> V put(K key, V value);//插入键值对<br> V remove(Object key);//通过key<a href="http://www.php.cn/php/php-tp-remove.html" target="_blank">删除</a><br> void put<a href="http://www.php.cn/wiki/1483.html" target="_blank">All</a>(Map<? <a href="http://www.php.cn/wiki/166.html" target="_blank">extends</a> K, ? extends V> m);//将一个Map插入<br> void <a href="http://www.php.cn/wiki/917.html" target="_blank">clear</a>();//清空<br> <a href="http://www.php.cn/code/8209.html" target="_blank">Set</a><K> keySet();//返回key集合<br> Collection<V> values();//返回value<br> Set<Map.Entry<K, V>> entrySet();//实体集合,Map的改变会影响到它<br> interface Entry<K,V> {<br> K getKey();//获得key<br> V getValue();//获得value<br> V setValue(V value);//设置值<br> boolean equals(Object o);//判断对象是否相等<br> int hashCode();//返回hashCode<br> //比较器,比较两个key<br> public <a href="http://www.php.cn/wiki/188.html" target="_blank">static</a> <K extends Comparable<? <a href="http://www.php.cn/code/8202.html" target="_blank">super</a> K>, V> Comparator<Map.Entry<K,V>> comparingByKey() {<br> <a href="http://www.php.cn/wiki/135.html" target="_blank">return</a> (Comparator<Map.Entry<K, V>> & Serializable)<br> (c1, c2) -> c1.getKey().compareTo(c2.getKey());<br> }<br> //比较两个值<br> public static <K, V extends Comparable<? super V>> Comparator<Map.Entry<K,V>> comparingByValue() {<br> return (Comparator<Map.Entry<K, V>> & Serializable)<br> (c1, c2) -> c1.getValue().compareTo(c2.getValue());<br> }<br> //比较两个key<br> public static <K, V> Comparator<Map.Entry<K, V>> comparingByKey(Comparator<? super K> cmp) {<br> Objects.<a href="http://www.php.cn/wiki/136.html" target="_blank">require</a>Non<a href="http://www.php.cn/wiki/62.html" target="_blank">Null</a>(cmp);<br> return (Comparator<Map.Entry<K, V>> & Serializable)<br> (c1, c2) -> cmp.compare(c1.getKey(), c2.getKey());<br> }<br> //比较两个值<br> public static <K, V> Comparator<Map.Entry<K, V>> comparingByValue(Comparator<? super V> cmp) {<br> Objects.requireNonNull(cmp);<br> return (Comparator<Map.Entry<K, V>> & Serializable)<br> (c1, c2) -> cmp.compare(c1.getValue(), c2.getValue());<br> }<br> }<br> //比较map是否相等<br> boolean equals(Object o);<br> int hashCode();//hashCode<br> default V get<a href="http://www.php.cn/wiki/1360.html" target="_blank">OrD</a>efault(Object key, V defaultValue) {<br> V v;<br> return (((v = get(key)) != null) || containsKey(key))<br> ? v<br> : defaultValue;<br> }<br> default void <a href="http://www.php.cn/wiki/127.html" target="_blank">forEach</a>(BiConsumer<? super K, ? super V> <a href="http://www.php.cn/java/java-Action.html" target="_blank">action</a>) {<br> Objects.requireNonNull(action);<br> for (Map.Entry<K, V> entry : entrySet()) {<br> K k;<br> V v;<br> try {<br> k = entry.getKey();<br> v = entry.getValue();<br> } catch(IllegalState<a href="http://www.php.cn/wiki/265.html" target="_blank">Exception</a> ise) {<br> // this usually means the entry is no longer in the map.<br> throw <a href="http://www.php.cn/wiki/165.html" target="_blank">new</a> Con<a href="http://www.php.cn/wiki/1046.html" target="_blank">current</a>Mod<a href="http://www.php.cn/wiki/109.html" target="_blank">if</a>icationException(ise);<br> }<br> action.accept(k, v);<br> }<br> }<br> default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {<br> Objects.requireNonNull(function);<br> for (Map.Entry<K, V> entry : entrySet()) {<br> K k;<br> V v;<br> try {<br> k = entry.getKey();<br> v = entry.getValue();<br> } catch(IllegalStateException ise) {<br> // this usually means the entry is no longer in the map.<br> throw new ConcurrentModificationException(ise);<br> }<br><br> // ise thrown from function is not a cme.<br> v = function.apply(k, v);<br><br> try {<br> entry.setValue(v);<br> } catch(IllegalStateException ise) {<br> // this usually means the entry is no longer in the map.<br> throw new ConcurrentModificationException(ise);<br> }<br> }<br> }<br> default V putIfAbsent(K key, V value) {<br> V v = get(key);<br> if (v == null) {<br> v = put(key, value);<br> }<br><br> return v;<br> }<br> //删除某个key和value对应的对象<br> default boolean remove(Object key, Object value) {<br> Object curValue = get(key);<br> if (!Objects.equals(curValue, value) ||<br> (curValue == null && !containsKey(key))) {<br> return false;<br> }<br> remove(key);<br> return true;<br> }<br> //将某个key和oldValue对应的值替换为newValue<br> default boolean replace(K key, V oldValue, V newValue) {<br> Object curValue = get(key);<br> if (!Objects.equals(curValue, oldValue) ||<br> (curValue == null && !containsKey(key))) {<br> return false;<br> }<br> put(key, newValue);<br> return true;<br> }<br> //替换key的值<br> default V replace(K key, V value) {<br> V curValue;<br> if (((curValue = get(key)) != null) || containsKey(key)) {<br> curValue = put(key, value);<br> }<br> return curValue;<br> }<br> default V computeIfAbsent(K key,<br> Function<? super K, ? extends V> mappingFunction) {<br> Objects.requireNonNull(mappingFunction);<br> V v;<br> if ((v = get(key)) == null) {<br> V newValue;<br> if ((newValue = mappingFunction.apply(key)) != null) {<br> put(key, newValue);<br> return newValue;<br> }<br> }<br><br> return v;<br> }<br> default V computeIfPresent(K key,<br> BiFunction<? super K, ? super V, ? extends V> remappingFunction) {<br> Objects.requireNonNull(remappingFunction);<br> V oldValue;<br> if ((oldValue = get(key)) != null) {<br> V newValue = remappingFunction.apply(key, oldValue);<br> if (newValue != null) {<br> put(key, newValue);<br> return newValue;<br> } <a href="http://www.php.cn/wiki/111.html" target="_blank">else</a> {<br> remove(key);<br> return null;<br> }<br> } else {<br> return null;<br> }<br> }<br> default V compute(K key,<br> BiFunction<? super K, ? super V, ? extends V> remappingFunction) {<br> Objects.requireNonNull(remappingFunction);<br> V oldValue = get(key);<br><br> V newValue = remappingFunction.apply(key, oldValue);<br> if (newValue == null) {<br> // <a href="http://www.php.cn/wiki/1298.html" target="_blank">delete</a> mapping<br> if (oldValue != null || containsKey(key)) {<br> // something to remove<br> remove(key);<br> return null;<br> } else {<br> // nothing to do. Leave things as they were.<br> return null;<br> }<br> } else {<br> // add or replace old mapping<br> put(key, newValue);<br> return newValue;<br> }<br> }<br> default V merge(K key, V value,<br> BiFunction<? super V, ? super V, ? extends V> remappingFunction) {<br> Objects.requireNonNull(remappingFunction);<br> Objects.requireNonNull(value);<br> V oldValue = get(key);<br> V newValue = (oldValue == null) ? value :<br> remappingFunction.apply(oldValue, value);<br> if(newValue == null) {<br> remove(key);<br> } else {<br> put(key, newValue);<br> }<br> return newValue;<br> }<br>}<br></p>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
