一些简单的Map集合:
Map集合:双列集合
java.util.Map<K,V>集合
将键(Key)映射到值(Value)的对象,一个映射不能包含重复的键,每一个键最多只能映射一个值。
常用实现类及其方法
HashMap<K,V>集合
java.util.HashMap<K,V>集合 implements Map<K,V>接口
HashMap特点:
-
HashMap集合底层是哈希表:查询速度快
(jdk1.8之前:数组+单向链表)/(jdk1.8之后:数组+单向链表/红黑树(链表的长度超过8)):为了提高查询速度
-
HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致。
LinkedHashMap<K,V>集合
LinkedHashMap<K,V>集合 extends HashMap<K,V>集合
LinkedHashMap集合的特点:
- 集合底层是哈希表+链表:保证元素有序。
- 是一个有序的集合,存储元素和取出元素的顺序是一致的。
常用方法:
public V put(Object key)方法:添加指定的值到map集合当中
- 返回值:v
- 储存键值对的时候,key不重复,返回值v是null
- 储存键值对的时候,key重复,则会使用新的value替换map中重复的value,返回被替换的value值
private static void show01() {
Map<String,String> map = new HashMap<>();
String v1 = map.put("古力娜扎","迪丽热巴");
System.out.println("v1:"+v1);
System.out.println(map);
}
/*
v1:null
{古力娜扎=迪丽热巴}
*/
public V remove(Object key)方法:删除指定键值在集合中的元素的值
- 返回值:V
- key存在,value返回删除的值
- key不存在,value返回null
private static void show02() {
Map<String,Integer> map = new HashMap<>();
map.put("me",21);
map.put("迪丽热巴",28);
map.put("古力娜扎",29);
System.out.println(map);
Integer v1 = map.remove("古力娜扎");
System.out.println("v1返回值:"+v1);
System.out.println(map);
}
/*
{迪丽热巴=28, me=21, 古力娜扎=29}
v1返回值:29
{迪丽热巴=28, me=21}
*/
public V get(Object key)方法:通过key来获取value
- 返回值:V
- key存在,返回对应的value值
- key不存在,返回null
private static void show03() {
Map<String,Integer> map = new HashMap<>();
map.put("迪丽热巴",28);
map.put("古力娜扎",29);
Integer g1 = map.get("迪丽热巴");
System.out.println("g1:"+g1);
}
/*
g1:28
*/
boolean containsKey(Object key):判断集合中是否包含指定的键
- 返回ture、false
- 包含返回ture
- 不包含返回false
private static void show04() {
Map<String,Integer> map = new HashMap<>();
map.put("迪丽热巴",28);
map.put("古力娜扎",29);
boolean b1 = map.containsKey("迪丽热巴");
System.out.println(b1);
boolean b2 = map.containsValue(27);
System.out.println(b2);
}
/*
true
false
*/