Java>Map集合>>Map接口常用的四种方法(put、remove、get、containsKey)
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

查看4道真题和解析