一.Map接口的概述
Map集合<K,V>
:以一种键值对而存在- Map集合:针对的是键有效,跟值没有关系,键是唯一的,值是可以重复的
- Map和Collection区别
Map集合:是一种键值对的一种映射关系,键是唯一的,值是可以重复的!(双列集合)
hashMap,treeMap是其子实现类
Collection:集合框架的顶层的根接口,有两个子接口:List(元素可以重复),set(元素不可以重复的),单列集合
ArrayList,Vector,LinkedList是List的子实现类
treeSet,hashSet是Set的子实现类
二.Map集合的功能
添加功能:
V put(K key,V value)
:添加元素(键和值的具体元素)
其他用法:
如果键是第一次存储的时候,返回值null
如果键已经存在,再次存储的时候将第一次的值返回,并且后面的值覆盖掉前面的值
import java.util.HashMap;
import java.util.Map;
public class Demo1 {
public static void main(String[] args) {
//创建map集合对象
Map<String,String> m = new HashMap<String,String>();
//添加元素
m.put("01", "王一");
m.put("02", "王二");
m.put("03", "王三");
m.put("04", "王四");
System.out.println(m);
}
}
结果:
{01=王一, 02=王二, 03=王三, 04=王四}
删除功能:
void clear()
:从此映射中移除所有映射关系(移出所有的键和值)V remove(Object key)
:删除键,返回值
import java.util.HashMap;
import java.util.Map;
public class Demo1 {
public static void main(String[] args) {
//创建map集合对象
Map<String,String> m = new HashMap<String,String>();
//添加元素
m.put("01", "王一");
m.put("02", "王二");
m.put("03", "王三");
m.put("04", "王四");
//删除键,返回值
System.out.println(m.remove("01"));
System.out.println(m);
//清除
m.clear();
System.out.println(m);
}
}
结果:
王一
{02=王二, 03=王三, 04=王四}
{}
判断功能:
boolean containsKey(Object key)
:判断当前Map集合中是否存在key:键boolean containsValue(Object value)
:判断当前Map姐中是否存在value值
public class Demo1 {
public static void main(String[] args) {
//创建map集合对象
Map<String,String> m = new HashMap<String,String>();
//添加元素
m.put("01", "王一");
m.put("02", "王二");
m.put("03", "王三");
m.put("04", "王四");
System.out.println(m.containsKey("01"));
System.out.println(m.containsValue("王五"));
}
}
结果:
true
false
获取功能:
V get(Object key)
:返回指定键所映射的值Set<K> keySet()
:获取所有的键的集合Collection<V> values()
:获取所有的值的
集合Set<Map.Entry<K,V>> entrySet()
:获取键值对对象
import java.util.HashMap;
import java.util.Map;
public class Demo1 {
public static void main(String[] args) {
//创建map集合对象
Map<String,String> m = new HashMap<String,String>();
//添加元素
m.put("01", "王一");
m.put("02", "王二");
m.put("03", "王三");
m.put("04", "王四");
System.out.println(m.get("01"));
System.out.println(m.keySet());
System.out.println(m.values());
System.out.println(m.entrySet());
}
}
结果:
王一
[01, 02, 03, 04]
[01=王一, 02=王二, 03=王三, 04=王四]
### 长度功能
1. int size()
:求集合长度
import java.util.HashMap;
import java.util.Map;
public class Demo1 {
public static void main(String[] args) {
//创建map集合对象
Map<String,String> m = new HashMap<String,String>();
//添加元素
m.put("01", "王一");
m.put("02", "王二");
m.put("03", "王三");
m.put("04", "王四");
System.out.println(m.size());
}
}
结果:
4
三.Map集合的遍历方式
- 方式一:
1)获取所有的键的集合keySet()(这种比较常用)
2)遍历键的集合,让键找值
3)输出 - 方式二:
1)获取键值对对象的集合
2)遍历键值对对象的集合,
3)通过键值对对象找键和值
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
public class Demo1 {
public static void main(String[] args) {
//创建map集合对象
Map<String,String> m = new HashMap<String,String>();
//添加元素
m.put("01", "王一");
m.put("02", "王二");
m.put("03", "王三");
m.put("04", "王四");
//方式一:
//找键的集合
Set<String> s = m.keySet();
//通过键的集合找值
for(String key : s){
String value = m.get(key);
//输出
System.out.println(key+"="+value);
}
System.out.println("-----------");
//方式二:
//获取键值对对象
Set<Entry<String, String>> enterySet = m.entrySet();
for(Entry<String,String> e : enterySet){
//获取键
String k = e.getKey();
//获取值
String v = e.getValue();
System.out.println(k+"="+v);
}
}
}
结果:
01=王一
02=王二
03=王三
04=王四
-----------
01=王一
02=王二
03=王三
04=王四