文章目录
🚩Java Map接口
📚Java集合框架图
通过集合框架图我们发现,Map 接口是顶层接口。
public interface Map<K,V>
Map
接口以键值对的形式存储数据。
K:映射所维护的键的类型。
V:映射所维护的值的类型
📘Map接口的特点
我们用Map
接口的实现类HashMap
通过添加元素,来观察Map接口的特点。
🐟代码示例
import java.util.HashMap;
@SuppressWarnings({"all"})
public class MapDemo {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1","v1");
hashMap.put("k1","v11");
hashMap.put(null,"k");
hashMap.put("k2",null);
hashMap.put("k3",null);
System.out.println(hashMap);
}
}
🐋运行结果
🐳特点总结
1.用来存储具有映射关系的数据:Key-Value
2.Map中的key和value可以是任何引用数据类型
3.Map中的key不可以重复
4.Map中的value可以重复
5.如果向Map中加入数据,Map中有对应的数据key相同,会把与之对应的Value覆盖
6.Map的key可以为null,value也可以为null,注意key为null,只能有一个,value为null,可以多个
7.常用String类作为Map中的key
8.key和value之间存在单向的一对一关系,即通过指定的key总能找到对应的value
9.map中取出的数据顺序与插入的数据顺序不一致,因为map底层是运用了哈希表
📗Map接口的常用方法
方法名称 | 返回值类型 |
---|---|
size() | int |
isEmpty | boolean |
containsKey(Object) | boolean |
containsValue(Object) | boolean |
get(Object) | V |
put(K,V) | V |
remove(Object) | V |
putAll(Map<? extends K,? extends V>) | void |
clear() | void |
keySet() | Set |
values() | Collection |
entrySet() | Set<Entry<K,V>> |
V put(K key, V value)
将指定的键key和value存储到集合中,
如果当前插入的数据的key已经存在时,最新的value会覆盖原有的value
返回值是键值对的值的类型
【map接口下集合特点:key不能重复】
如果当前key不存在时,插入数据返回为null
如果当前key存在时,返回旧的value值
import java.util.HashMap;
public class MapTest01 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1","v1");
hashMap.put("k2","v2");
hashMap.put("k3","v3");
String put =hashMap.put("k3","v33");
System.out.println(put);
System.out.println(hashMap);
}
}
运行结果:
int size()
表示Map集合中元素的个数,返回int类型表示数据个数
import java.util.HashMap;
public class MapTest02 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
int size = hashMap.size();
System.out.println(size);
}
}
运行结果
V get(Object key)
获取键所映射的值,如果不存在则返回为null
import java.util.HashMap;
public class MapTest03 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
String v1 = hashMap.get("k1");
String v2 = hashMap.get("k4");
System.out.println(v1);
System.out.println(v2);
}
}
运行结果:
boolean isEmpty()
判断当前集合是否为空, 返回是Boolean类型,true:表示为空,false:表示不为空
import java.util.HashMap;
public class MapTest04 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
boolean empty = hashMap.isEmpty();
System.out.println(empty);
}
}
运行结果:
boolean containsKey(Object key)
判断map集合中是否存在指定的键
参数key:需要判断是否存在的键
返回是Boolean类型:true:存在 false;不存在
import java.util.HashMap;
public class MapTest05 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
boolean k1 = hashMap.containsKey("k1");
System.out.println(k1);
}
}
运行结果:
boolean containsValue(Object value)
import java.util.HashMap;
public class MapTest06 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
boolean v1 = hashMap.containsValue("v1");
System.out.println(v1);
}
}
运行结果:
V remove(Object key)
通过key删除集合中该key对应的键值对
参数key:指定的键
返回值:是value值,如果key不存在,返回的null
import java.util.HashMap;
public class MapTest07 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
String k1 = hashMap.remove("k1");
String k2 = hashMap.remove("k4");
System.out.println(k1);
System.out.println(k2);
System.out.println(hashMap);
}
}
运行结果:
void clear()
删除集合中所有的元素
import java.util.HashMap;
public class MapTest08 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
System.out.println("删除前:" + hashMap);
hashMap.clear();
System.out.println("删除后:" + hashMap);
}
}
运行结果:
entrySet()
将map集合转化为Set集合,多用于遍历键值对
Set <Map.Entry <String, String>> entries = hashMap.entrySet();
Set keySet()
获取Map集合中所有键的Set集合,多用于遍历键
Set<String> keys = hashMap.keySet();
Collection values()
获取Map集合中所有值的Collection的集合,多用于值的遍历
Collection<String> values = hashMap.values();
📕Map接口中实现类的三种遍历方式
⛵按照键值对遍历
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MapFor01 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
Iterator<Map.Entry<String, String>> iterator = hashMap.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry<String, String> entry = iterator.next();
String key = entry.getKey();
String value = entry.getValue();
System.out.println("key:" + key + " value:" + value);
}
}
}
运行结果:
🚤遍历map中所有的键
import java.util.HashMap;
import java.util.Set;
public class MapFor02 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
Set<String> keySet = hashMap.keySet();
for ( String key : keySet) {
System.out.println(key);
}
}
}
运行结果:
🛥️遍历Map中所有的值
import java.util.Collection;
import java.util.HashMap;
public class MapFor03 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
Collection<String> values = hashMap.values();
for (String value : values) {
System.out.println(value);
}
}
}
运行结果: