Map集合的特点:
1. Map集合是一个双列集合,一个元素包含两个值(一个key,一个value) ;
2. Map集合中的元素,key和value的数据类型可以相同,也可以不同 ;
3. Map集合中的元素,key是不允许重复的,value是可以重复的 ;
4. Map集合中的元素,key和value是一一对应的 ;
java.util.HashMap<k,v>集合 implement Map<k,v>接口
HashMap集合的特点:
1. HashMap集合底层是哈希表:查询的速度特别快
JDK1.8之前:数组+单项列表
JDK1.8之后:数组+单项列表/红黑树(链表的长度超过8):提高查询的速度
2. HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致
java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合
LinkedHashMap集合的特点:
1. LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
2. LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的
实例:
定义一个类:
1. Map集合是一个双列集合,一个元素包含两个值(一个key,一个value) ;
2. Map集合中的元素,key和value的数据类型可以相同,也可以不同 ;
3. Map集合中的元素,key是不允许重复的,value是可以重复的 ;
4. Map集合中的元素,key和value是一一对应的 ;
java.util.HashMap<k,v>集合 implement Map<k,v>接口
HashMap集合的特点:
1. HashMap集合底层是哈希表:查询的速度特别快
JDK1.8之前:数组+单项列表
JDK1.8之后:数组+单项列表/红黑树(链表的长度超过8):提高查询的速度
2. HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致
java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合
LinkedHashMap集合的特点:
1. LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
2. LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的
实例:
定义一个类:
package JiHe.MapJiHe; import java.util.HashMap; import java.util.Map; /* java.util.Map<k,v>集合 Map集合的特点: 1. Map集合是一个双列集合,一个元素包含两个值(一个key,一个value) 2. Map集合中的元素,key和value的数据类型可以相同,也可以不同 3. Map集合中的元素,key是不允许重复的,value是可以重复的 4. Map集合中的元素,key和value是一一对应的 java.util.HashMap<k,v>集合 implement Map<k,v>接口 HashMap集合的特点: 1. HashMap集合底层是哈希表:查询的速度特别快 JDK1.8之前:数组+单项列表 JDK1.8之后:数组+单项列表/红黑树(链表的长度超过8):提高查询的速度 2. HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致 java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合 LinkedHashMap集合的特点: 1. LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序) 2. LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的 */ public class Demo01Map { public static void main(String[] args) { show01(); // V put(K key, V value): 将指定的值与此映射中的指定键关联(可选操作)。 show02(); // V remove(Object key): 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 show03(); // V get(Object key): 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 shoe04(); // boolean containsKey(Object key): 包含返回true ,不包含返回 false } /* boolean containsKey(Object key): 包含返回true ,不包含返回 false */ private static void shoe04() { //创建Map集合对象 Map<String, Integer> map = new HashMap<>(); map.put("AAA",235); map.put("BBB",123); map.put("CCC",654); boolean aaa = map.containsKey("AAA"); boolean ggg = map.containsKey("GGG"); System.out.println(aaa); // true System.out.println(ggg); // false } /* public V get(Object key): 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 返回值:V key存在,返回对应的value值 key不存在,返回null */ private static void show03() { //创建Map集合对象 Map<String, Integer> map = new HashMap<>(); map.put("AAA",235); map.put("BBB",123); map.put("CCC",654); Integer ccc = map.get("CCC"); Integer eee = map.get("EEE"); System.out.println(ccc); // 654 System.out.println(eee); // key不存在,返回null System.out.println("==========================================="); } /* public V remove(Object key): 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 返回值:V key存在,v返回被删除的值 key不存在,v返回null */ private static void show02() { //创建Map集合对象 Map<String, Integer> map = new HashMap<>(); map.put("AAA",235); map.put("BBB",123); map.put("CCC",654); System.out.println(map); // {AAA=235, CCC=654, BBB=123} Integer bbb = map.remove("BBB"); Integer ddd = map.remove("DDD"); System.out.println(bbb); // 123 System.out.println(ddd); // key不存在,v返回null System.out.println(map); // {AAA=235, CCC=654} System.out.println("==========================================="); } /* public V put(K key, V value): 将指定的值与此映射中的指定键关联(可选操作)。 返回值:V 存储键值对的时候,key不重复,返回值V是null 存储键值对的时候,key重复,会使用新的value替换map中重复的value,返回被替换的value值 */ private static void show01() { //创建Map集合对象,多态 Map<String, String> map = new HashMap<>(); String v1 = map.put("李晨","范冰冰"); System.out.println("v1:" + v1); String v2 = map.put("李晨","范冰冰2"); System.out.println("v2:" + v2); System.out.println(map); // {李晨=范冰冰2} map.put("郭涛","李然"); map.put("黄晓明","Angelababy"); map.put("夏雨","袁泉"); System.out.println(map); System.out.println("==========================================="); } }
v1:null
v2:范冰冰
{李晨=范冰冰2}
{夏雨=袁泉, 李晨=范冰冰2, 郭涛=李然, 黄晓明=Angelababy}
===========================================
{AAA=235, CCC=654, BBB=123}
123
null
{AAA=235, CCC=654}
===========================================
654
null
===========================================
true
false
v2:范冰冰
{李晨=范冰冰2}
{夏雨=袁泉, 李晨=范冰冰2, 郭涛=李然, 黄晓明=Angelababy}
===========================================
{AAA=235, CCC=654, BBB=123}
123
null
{AAA=235, CCC=654}
===========================================
654
null
===========================================
true
false