Map集合知识点总结
详细demo演示:day18pagage
一、Map集合
特点:1、是双列集合,一个元素包含两个值(key,value)
2、key和value的数据类型可以相同,也可不同
3、key和value是一一对应的关系
4、key不可重复,value可重复
5、key,value都可为null
常用的方法:
put(K key,V value):添加元素
remove(K key):通过key删除元素
get(K key):通过key获取元素
containsKey(Object key):判断集合是否包含key
常用的实现类:
1、HashMap<K key,V value>:implements Map<K key,V value>
特点:(1)底层是哈希表(数组+链表/红黑树)
(2)无序(元素的存取顺序可能不一致)
(3)实现不同步(多线程,速度快,不安全)
2、LinkedHashMap<K key,V value>:extends HashMap<K key,V value>
特点:(1)底层是哈希表+链表
(2)有序
Map集合的遍历
有两种方式:
1、键找值的方式
步骤:(1)Map中的keySet()方法,将所有的key取出,存到set集合中
(2)使用迭代器/增强for循环,遍历set,获取每一个key
(3)Map中的get(K Key),通过key找到value
package day18;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo01Map {
public static void main(String[] args) {
//demo01();
demo02();
}
private static void demo02() {
Map<String,Integer> map = new HashMap<>();
map.put("yjqNB",18);
map.put("卢文慧",17);
map.put("煞笔",20);
map.put("猪比",60);
Set<String> strings = map.keySet();
System.out.println(strings);
for (String s : strings) {
Integer a = map.get(s);
System.out.println(a);
}
}
private static void demo01() {
Map<String,Integer> map = new HashMap<>();
map.put("yjqNB",19);
map.put("卢文慧",18);
Integer integer = map.remove("yjqNB");
System.out.println(integer);
System.out.println(map);
map.put("煞笔",20);
map.put("猪比",60);
boolean a = map.containsKey("煞笔");
boolean b = map.containsValue(30);
System.out.println(a);
System.out.println(b);
Integer integer1 = map.get("鲁温慧");
System.out.println(integer1);
}
}
2、键值对对象的方式
步骤:(1)Map中的entrySet()方法,将所有的Entry对象取出,存到set集合中
(2)使用迭代器/增强for循环遍历s,获取每一个Entry对象
(3)Entry对象中的getKey()、getValue()方法,获取键、值
package day18;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo02EntrySet {
public static void main(String[] args) {
demo01();
}
private static void demo01() {
Map<String,Integer> map = new HashMap<>();
map.put("yjqNB",18);
map.put("卢文慧",17);
map.put("煞笔",20);
map.put("猪比",60);
Set<Map.Entry<String, Integer>> set = map.entrySet();
System.out.println(set);
System.out.println("----------------------------------");
for (Map.Entry<String, Integer> entry : set) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key);
System.out.println(value);
}
}
}
二、LinkedHashMap集合
LinkedHashMap<K key,V value>:extends HashMap<K key,V value>
特点:1、key不能重复
2、有序
三、Hashtable集合
Hashtable<K key,V value>:implements Map<K key,V value>
特点:1、底层是哈希表
2、实现同步的(单线程,安全、速度慢)
3、key,value都不能为null