Heim >Java >javaLernprogramm >Die Verwendung der Map-Schnittstelle in Java und die Zusammenfassung der Interview-Wissenspunkte
Dieser Artikel vermittelt Ihnen relevantes Wissen über Java, das hauptsächlich die Verwendung der Kartenschnittstelle und verwandte Fragen zu Interview-Wissenspunkten organisiert, einschließlich der Speichereigenschaften der Kartenschnittstelle, allgemeiner Implementierungsklassen, Erstellungsmethoden, allgemeiner Methoden usw. Werfen wir einen Blick darauf Ich hoffe, dass der Inhalt unten für alle hilfreich sein wird.
Empfohlenes Lernen: „Java-Video-Tutorial“
In Form von Schlüssel-(Schlüssel-)Wert-(Wert)-Paaren gespeichert
Schlüssel sind ungeordnet und ungeordnet Hrsg Indizes, Elemente können nicht wiederholt werden
Werte sind ungeordnet, keine Indizes, Elemente können wiederholt werden
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
JDK1.2 zugrunde liegende Hash-Tabellen-Implementierung ist Thread-unsicher und hocheffizient
LinkedHashMap
TreeMap
HashTable
Eigenschaften
Value put(key, value)
: Fügen Sie am Ende der Sammlung ein Schlüssel-Wert-Paar hinzu🎜void clear()
: Lösche die Sammlungselemente🎜🎜🎜🎜boolean containsKey(key)
: Bestimmen Sie, ob ein bestimmter Schlüssel in der Sammlung vorhanden ist 🎜🎜🎜🎜boolean containsValue(value)
: Bestimmen Sie, ob ein bestimmter Wert in der Sammlung vorhanden ist🎜🎜🎜🎜value get(key)
: Rufen Sie den dem Schlüssel entsprechenden Wert ab 🎜🎜🎜 + Inhalt wird am Ende der aktuellen Sammlung hinzugefügt🎜🎜🎜🎜valueremove(key)
: Entfernen Sie das Schlüssel-Wert-Paar, das dem Schlüssel entspricht🎜🎜🎜🎜int size( )
: Sammlung Anzahl der Schlüssel-Wert-Paare abrufen🎜🎜🎜🎜🎜Codebeispiel: 🎜🎜rrreee🎜Traversal-Methode🎜HashMap
kann Nullwerte speichern, Schlüssel können 0-1 Nullen speichern und Werte können 0 speichern -n null🎜🎜🎜🎜LinkedHashMap
kann sicherstellen, dass die Reihenfolge der Ein- und Auszahlung konsistent ist🎜🎜🎜🎜TreeMap
kann standardmäßig in aufsteigender Reihenfolge nach dem Schlüssel sortiert werden 🎜HashTable
kann Null nicht speichern Werte: 🎜🎜🎜Set
ist nur ein Schlüssel, die Map
-Sammlung ohne Wert 🎜🎜🎜🎜Die zugrunde liegende Array-Länge beträgt 16
🎜🎜🎜🎜Die Der Array-Ladefaktor beträgt 75 %
, wenn die Array-Bit-Nutzung 75 % erreicht, wird das Array im Sinne eines ausgeglichenen Binärbaums
erweitert Originallänge *2
, und die Länge jedes erweiterten Arrays beträgt 16🎜 🎜Warum speichert Set oder Map Werte von klein bis groß?
Rot-Schwarz Der Baum verwendet die Methode „Binäre Suche“, die sich durch „schnelle Abfrageeffizienz“ auszeichnet. Rot-Schwarz-Baum: Verwenden Sie den Hash-Code-Wert als Beurteilungskriterium nach rechts. Wenn der Hash-Codewert kleiner als das aktuelle Element ist, wird nach links gespeichert
Binäre SuchmethodeWenn die Länge von a Wenn die verknüpfte Liste im Hash-Tabellen-Array 8 erreicht, werden die Elemente der verknüpften Liste neu organisiert und der Rot-Schwarz-Baum aktiviert. Lernempfehlung: „
Java-Video-TutorialDas obige ist der detaillierte Inhalt vonDie Verwendung der Map-Schnittstelle in Java und die Zusammenfassung der Interview-Wissenspunkte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!