Map常用子类与Map接口中的常用方法
Map常用子类
通过查看Map接口描述,看到Map有多个子类,这里我们主要讲解常用的HashMap集合、LinkedHashMap集合。
HashMap<K,V>∶存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
.LinkedHashMap<K,V> :HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
tips : Map接口中的集合都有两个泛型变量<KV>,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>的数据类型可以相同,也可以不同。
.java.util. Map<k, v>集合Map集合的特点∶
1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
2.Map集合中的元素,key和valuie的数据类型可以相同,也可以不同
3.Aap集合中的元素,key是不允许重复的, value是可以重复的
4 .Map集合中的元素,key和value是——对应
java.util.HoshMap<k, v>集合implements Map<k, v>接口HashMap集合的特点:
1.HashMap集合底层是哈希表:查询的速度特别的快
DxI.8之前:数组+单回链表
DK1.8之后:数组+里向链表/红黑树(链表的长度超过8):提高查询的速度2.hashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致java.util.LinkedHashAap<k , v>集合extends HashAap<k , v>集合
linkedHashMap的特点:
1.LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
2.LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的
Map接口中的常用方法
Map接口中定义了很多方法,常用的如下:
public v put(K key,v value):把指定的键与指定的值添加到Map集合中。
public v remove(0bject key) :把指定的键所对应的键值对元素在Map集合中删除,返回被删除元素的值。public v get(object key)根据指定的键,在Map集合中获取对应的值。
boolean containsKey(object key)判断集合中是否包含指定的键。|public Set<K> keySet():获取Map集合中所有的键,存储到Set集合中。
public Set<Map.Entry<K,v>> entrySet():获取到Map集合中所有的键值对对象的集合(Set集合)。
package Demo_Map; import java.util.HashMap; /* java.util. Map<k, v>集合Map集合的特点∶ 1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value) 2.Map集合中的元素,key和valuie的数据类型可以相同,也可以不同 3.Aap集合中的元素,key是不允许重复的, value是可以重复的 4 .Map集合中的元素,key和value是——对应 java.util.HoshMap<k, v>集合implements Map<k, v>接口HashMap集合的特点: 1.HashMap集合底层是哈希表:查询的速度特别的快 DxI.8之前:数组+单回链表 DK1.8之后:数组+里向链表/红黑树(链表的长度超过8):提高查询的速度2.hashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致java.util.LinkedHashAap<k , v>集合extends HashAap<k , v>集合 linkedHashMap的特点: 1.LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序) 2.LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的 */ public class Demo01_Map_01 { public static void main(String[] args) { show01(); } //public V remove(Object key):把指定的键所对应的键值对元素在Nap集合中删除,返回被删除元素的值。[ //返回值:v //key存在, v返回被删除的值key不存在, v返回null private static void show01() { HashMap<String, Integer> map = new HashMap<>(); map.put("西施",175); map.put("镜",180); map.put("戈雅",175); System.out.println(map); Integer wzj = map.remove("王昭君"); System.out.println("v1"+wzj); System.out.println(map); int v1 =map.remove("钟无艳"); //自动拆箱 NullPointerException System.out.println("v2:"+v1); System.out.println(map); } /* public V put(K key,v value):把指定的键与指定的值添加到Map集合中。 返回值:v 存储键值对的时候,key不重复,返回值v是null 存储键值对的时候,key重复,会使用新的value替换map中重复的vaLue,返回被替换的vaLue值 */ private static void show() { //创建Map集合对象,多态 HashMap<String, String> map = new HashMap<>(); String put1 = map.put("李晨", "范冰冰"); System.out.println("v1"+put1); String put2 = map.put("李晨", "范冰冰"); System.out.println("v2"+put2); System.out.println(map); map.put("澜","蔡文姬"); map.put("吕布","貂蝉"); map.put("刘备","孙尚香"); System.out.println(map); } }
package Demo_Map;
import java.util.HashMap;
/*
java.util. Map<k, v>集合Map集合的特点∶
1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
2.Map集合中的元素,key和valuie的数据类型可以相同,也可以不同
3.Aap集合中的元素,key是不允许重复的, value是可以重复的
4 .Map集合中的元素,key和value是——对应
java.util.HoshMap<k, v>集合implements Map<k, v>接口HashMap集合的特点:
1.HashMap集合底层是哈希表:查询的速度特别的快
DxI.8之前:数组+单回链表
DK1.8之后:数组+里向链表/红黑树(链表的长度超过8):提高查询的速度2.hashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致java.util.LinkedHashAap<k , v>集合extends HashAap<k , v>集合
linkedHashMap的特点:
1.LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
2.LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的
*/
public class Demo01_Map_01 {
public static void main(String[] args) {
show01();
}
//public V remove(Object key):把指定的键所对应的键值对元素在Nap集合中删除,返回被删除元素的值。[
//返回值:v
//key存在, v返回被删除的值key不存在, v返回null
private static void show01() {
HashMap<String, Integer> map = new HashMap<>();
map.put("西施",175);
map.put("镜",180);
map.put("戈雅",175);
System.out.println(map);
Integer wzj = map.remove("王昭君");
System.out.println("v1"+wzj);
System.out.println(map);
int v1 =map.remove("钟无艳"); //自动拆箱 NullPointerException
System.out.println("v2:"+v1);
System.out.println(map);
}
/*
public V put(K key,v value):把指定的键与指定的值添加到Map集合中。
返回值:v
存储键值对的时候,key不重复,返回值v是null
存储键值对的时候,key重复,会使用新的value替换map中重复的vaLue,返回被替换的vaLue值
*/
private static void show() {
//创建Map集合对象,多态
HashMap<String, String> map = new HashMap<>();
String put1 = map.put("李晨", "范冰冰");
System.out.println("v1"+put1);
String put2 = map.put("李晨", "范冰冰");
System.out.println("v2"+put2);
System.out.println(map);
map.put("澜","蔡文姬");
map.put("吕布","貂蝉");
map.put("刘备","孙尚香");
System.out.println(map);
}
}