Cet article vous apporte des connaissances pertinentes sur java, qui organise principalement l'utilisation de l'interface Map et les questions connexes sur les points de connaissance des entretiens, y compris les caractéristiques de stockage de l'interface Map, les classes d'implémentation communes, les méthodes de création, les méthodes communes, etc. au contenu ci-dessous, j’espère qu’il sera utile à tout le monde.
Apprentissage recommandé : "Tutoriel vidéo Java"
Stockées sous forme de paires clé (clé) valeur (valeur)
Les clés sont désordonnées et non ordonnées Indices, les éléments ne peuvent pas être répétés
les valeurs ne sont pas ordonnées, pas d'indices, les éléments peuvent être répétés
HashMap
HashMap
LinkedHashMap
TreeMap
HashTable
Properties
Map<键的泛型,值的泛型> 集合名=new 实现类名<键的泛型,值的泛型>();
tips:一个键值对才是一个元素
值 put(键,值)
:将一个键值对添加至集合末尾
void clear()
:清空集合元素
boolean containsKey(键)
:判断集合中是否存在某个键
boolean containsValue(值)
:判断集合中是否存在某个值
值 get(键)
:获取键对应的值
boolean isEmpty()
:判断集合内容是否为空,不能判比null值
void putAll(Map的集合名)
:将指定Map集合的内容添加至当前集合末尾
值 remove(键)
:移除键所对应的键值对
int size()
:获取集合键值对的个数
代码举例:
public class Test { public static void main(String[] args) { //数字-String 1 - 一 1 - yi Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "一"); map.put(111, "yiyiyi"); map.put(666, "liuliuliu"); map.put(111, "一一一"); System.out.println(map.containsKey(678));//f System.out.println(map.containsValue("yiyiyi"));//t System.out.println(map.get(111)); map.remove(666); System.out.println(map.get(666)); System.out.println(map.size());//2 }}
//获取所有键 Set<键的泛型> set=集合名.keySet(); //遍历所有键 set.forEach( o-> //o就代表当前正在被遍历的键 //通过集合名.get(o)可以得到对应的值 );如: Map<Integer, String> map = new HashMap<>(); map.put(123, "yiersan"); map.put(234, "ersansi"); map.put(456, "siwuliu"); map.put(999, "jiujiujiu"); Set<Integer> set=map.keySet(); set.forEach(o-> System.out.println("键:"+o+",值:"+map.get(o)));
直接获取所有的值
Collection<值的泛型> values():获取所有的值存于Collection集合并返回
Collection<值的泛型> coll = 集合名.values();coll.forEach(v-> v就代表当前的值);如: Collection<String> coll = map.values(); coll.forEach(v-> System.out.println(v));
获取键值对对象进行遍历
Set< Map.Entry<键的泛型,值的泛型> > entrySet():获取所有的键值对对象存于Set集合并返回
Set< Map.Entry<键的泛型,值的泛型> > 等同于 Set<键值对对象>
getKey():获取Entry对象中的键
getValue():获取Entry对象中的值
//获取键值对对象集合 Set<Map.Entry<键的泛型,值的泛型>> set2=集合名.entrySet(); for (Map.Entry entry : set2) { //通过entry.getKey()获取键 //通过entry.getValue()获取值 }如: Set<Map.Entry<键的泛型,值的泛型>> set2=集合名.entrySet(); for (Map.Entry entry : set2) { System.out.println("键:"+entry.getKey()+",值:"+entry.getValue()) } System.out.println("lambda自遍历:"); set2.forEach(entry-> System.out.println("键:"+entry.getKey()+",值:"+entry.getValue()));
集合名.forEach(new BiConsumer<键的泛型, 值的泛型>() { @Override public void accept(键的泛型 i, 值的泛型 s) { //i代表键 //s代表值 } }); System.out.println("lambda简化自遍历:"); map.forEach((k,v)-> k代表键,v代表值);如: map.forEach(new BiConsumer<Integer, String>() { @Override public void accept(Integer i, String s) { System.out.println("键:"+i+",值:"+s); } }); System.out.println("lambda简化自遍历:"); map.forEach((k,v)-> System.out.println("键:"+k+",值:"+v));
HashMap
可以存放null值,键可以存放0-1个null,值可以存放0-n个null
LinkedHashMap
可以保证存入取出顺序一致
TreeMap
可以根据键进行默认的升序排序
HashTable
不能存放null值
Properties
键和值必须为String类型
Set
是一个只有键,没有值的Map
集合
底层数组长度为16
数组加载因子为75%
,当数组位使用到达75%时,会以平衡二叉树
的方式进行数组扩容,扩容长度为原长度*2
L'implémentation de la table de hachage sous-jacente JDK1.2 est dangereuse pour les threads et très efficace
LinkedHashMap
TreeMap
.
HashTable
.
Propriétés
🎜Map<Génériques pour les clés, génériques pour les valeurs> Nom de la collection=nouveau Nom de la classe d'implémentation<Génériques pour les clés, génériques pour les valeurs>();🎜</code.> </blockquote>🎜🎜astuces : a Une paire clé-valeur est un élément🎜🎜🎜Méthodes communes🎜🎜🎜🎜<code>Value put(key, value) : Ajoutez une paire clé-valeur à la fin de la collection🎜 🎜Si la clé existe déjà, alors remplacez la valeur🎜🎜🎜🎜🎜
void clear()
: effacez les éléments de la collection🎜🎜🎜🎜boolean containKey(key)
: déterminez si une certaine clé existe dans la collection 🎜🎜🎜🎜boolean containValue(value)
: Détermine si une certaine valeur existe dans la collection🎜🎜🎜🎜value get(key)
: Récupère la valeur correspondant à la clé 🎜🎜🎜 + Le contenu est ajouté à la fin de la collection actuelle🎜🎜🎜🎜valueremove(key)
: Supprime la paire clé-valeur correspondant à la clé🎜🎜🎜🎜int size( )
: Obtenez la collection Nombre de paires clé-valeur🎜🎜🎜🎜🎜Exemple de code : 🎜🎜rrreee🎜Méthode Traversal🎜🎜1, 🎜keySet()+get()🎜
🎜Récupérez d'abord toutes les clés, puis parcourez les clés pour obtenir toutes les valeurs🎜🎜Set
keySet() : récupère toutes les clés stockées dans la collection Set et retourne🎜🎜🎜🎜rrreee 🎜 2. 🎜valeurs()🎜
🎜🎜Obtenez toutes les valeurs directement🎜🎜🎜🎜Collection
: récupère toutes les valeurs stockées dans la collection et renvoie 🎜🎜 🎜🎜🎜rrreee 🎜3, 🎜entrySet()🎜
🎜🎜Obtenir la valeur clé pour parcourir l'objet🎜🎜🎜🎜Set< Map.Entry
: Récupère tous les objets de paire clé-valeur stockés dans la collection Set et renvoie 🎜🎜🎜🎜Set 🎜 🎜getKey() : Récupère la clé dans l'objet Entry🎜🎜🎜🎜getValue() : Récupère la valeur dans l'objet Entry🎜🎜🎜🎜🎜rrreee 🎜4, 🎜Auto-traversement forEach🎜
🎜JDK8.0🎜🎜🎜🎜rrreee🎜Utilisation de différentes classes d'implémentation🎜🎜🎜🎜
HashMap
peut stocker des valeurs nulles, les clés peuvent stocker 0 à 1 valeurs nulles et les valeurs peuvent stocker 0 -n null🎜🎜🎜🎜LinkedHashMap
peut garantir que l'ordre de dépôt et de retrait est cohérent🎜🎜🎜🎜TreeMap
peut être trié par ordre croissant par défaut en fonction de la clé 🎜🎜ne peut pas être effectué sur null Tri par défaut🎜🎜Si la clé est un type personnalisé, vous devez définir les règles de tri de la même manière que TreeSet🎜🎜🎜🎜🎜
HashTable
ne peut pas stocker null valeurs🎜🎜🎜🎜Propriétés
Les clés et les valeurs doivent être de type chaîne🎜🎜Le polymorphisme n'est pas recommandé pour la création🎜🎜Impossible de déclarer des génériques🎜🎜🎜🎜🎜Définir un supplément de points de connaissance pour l'entretien🎜 🎜🎜🎜
Set
est une clé uniquement, la collectionMap
sans valeur 🎜🎜🎜🎜La longueur du tableau sous-jacent est16
🎜🎜🎜🎜Le Le facteur de chargement du tableau est75%
, lorsque le bit du tableau Lorsque l'utilisation atteint 75%, le tableau sera étendu à la manière d'unarbre binaire équilibré
. longueur d'origine*2
, et la longueur de chaque tableau étendu est de 16🎜 🎜
Pourquoi Set ou Map stocke-t-il des valeurs de petite à grande ?
Le rouge-noir Tree utilise la méthode Recherche binaire, caractérisée par l'efficacité des requêtes rapides
arbre rouge-noir : utilisez la valeur du code de hachage comme critère de jugement. Si la valeur du code de hachage est supérieure à l'élément actuel, stockez-la. à droite. Si la valeur du code de hachage est inférieure à l'élément actuel, , stockez à gauche
Méthode de recherche binaire : caractérisée par le verrouillage de la moitié des données à la fois
Lorsque la longueur d'un La liste chaînée dans le tableau de la table de hachage atteint 8, elle va réorganiser les éléments de la liste chaînée, activer l'arbre rouge-noir
Apprentissage recommandé : "Tutoriel vidéo Java"
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!