Map接口
Map
接口中键和值一一映射 , 可以通过键来获取值
- 给定一个键和一个值,你可以将该值存储在一个
Map
对象,你可以通过键来访问对应的值。 - 当访问的值不存在的时候,方法就会抛出一个
NoSuchElementException
异常. - 当对象的类型和
Map
里元素类型不兼容的时候,就会抛出一个ClassCastException
异常。 - 当在不允许使用
Null
对象的Map
中使用Null
对象,会抛出一个NullPointerException
异常。 - 当尝试修改一个只读的
Map
时,会抛出一个UnsupportedOperationException
异常
Map接口中的常用方法
image.png代码演示
import java.util.HashMap;
import java.util.Map;
public class MapDemo {
public static void main(String[] args){
// 创建Map对象
Map<String, String> map = new HashMap<String, String>();
// 添加元素
map.put("星期一", "Monday");
map.put("星期天", "Sunday");
System.out.println(map); // {星期天=Sunday, 星期一=Monday}
// 当给给Map中添加元素,会返回原来对应的value值
// 若key没有对应的值,返回null
System.out.println(map.put("星期一", "Mon")); // Monday
System.out.println(map); // {星期天=Sunday, 星期一=Mon
// 根据指定的key获取相应恩value
String value = map.get("星期天");
System.out.println(value); // Sunday
// 根据key删除元素,会返回key对应value值
String v = map.remove("星期天");
System.out.println(v); // Sunday
}
}
Map集合遍历键找值方式
- 获取
Map
集合中所有的键,由于键是唯一的,所以返回一个Set
集合存储所有的键 - 遍历键的
Set
集合,得到每一个键 - 根据键,获取键所对应的值
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapDemo {
public static void main(String[] args){
// 创建Map对象
Map<String, String> map = new HashMap<String, String>();
// 添加元素
map.put("星期天", "Sunday");
map.put("星期一", "Monday");
map.put("星期二", "Tuesday");
map.put("星期三", "Wednesday");
map.put("星期四", "Thursday");
map.put("星期五", "Friday");
map.put("星期六", "Saturday");
// 获取Map中所有的key,是一个Set集合
Set<String> keySet = map.keySet();
// 迭代器遍历
Iterator<String> iterator = keySet.iterator();
while(iterator.hasNext()){
// 获取key
String key = iterator.next();
// 获取value
String value = map.get(key);
System.out.println(key + "= " + value);
}
// 使用增强for
for(String key1: keySet){
String value1 = map.get(key1);
System.out.println(key1 + "= " + value1);
}
}
}
Entry键值对对象
在Map
类设计时,提供了一个嵌套接口:Entry
。Entry
将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map
集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值
image.png
Map集合遍历键值对方式
- 获取
Map
集合中,所有的键值对(Entry)对象,以Set
集合形式返回 - 遍历包含键值对(Entry)对象的
Set
集合,得到每一个键值对(Entry)对象 - 通过键值对(Entry)对象,获取Entry对象中的键与值
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapDemo {
public static void main(String[] args){
// 创建Map对象
Map<String, String> map = new HashMap<String, String>();
// 添加元素
map.put("星期天", "Sunday");
map.put("星期一", "Monday");
map.put("星期二", "Tuesday");
map.put("星期三", "Wednesday");
map.put("星期四", "Thursday");
map.put("星期五", "Friday");
map.put("星期六", "Saturday");
// 获取Map中所有的key和value的对应关系
Set<Map.Entry<String, String>> entrySet = map.entrySet();
// 迭代器遍历
Iterator<Map.Entry<String, String>> iterator = entrySet.iterator();
while(iterator.hasNext()){
// 获取entry
Map.Entry<String, String> entry = iterator.next();
// 获取key
String key = entry.getKey();
// 获取value
String value = entry.getValue();
System.out.println(key + "= " + value);
}
// 使用增强for
for(Map.Entry<String, String> entry: entrySet){
// 获取key
String key = entry.getKey();
// 获取value
String value = entry.getValue();
System.out.println(key + "= " + value);
}
}
}
Collections集合工具类
image.png// 排序前元素list集合元素 [33,11,77,55]
Collections.sort(list);
// 排序后元素list集合元素 [11,33,55,77]
// list集合元素 [11,33,55,77]
Collections.shuffle(list);
// 使用shuffle方法后,集合中的元素为[77,33,11,55],每次执行该方法,集合中存储的元素位置都会随机打乱
集合继承体系的面向对象思想
image.png- 接口:用来明确所有集合中该具有的功能,相当于在定义集合功能标准
- 抽象类:把多个集合中功能实现方式相同的方法,抽取到抽象类实现,具体集合不再遍写,继承使用即可
- 具体类:继承抽象类,实现接口,重写所有抽象方法,达到具备指定功能的集合。每个具体集合类,根据自身的数据存储结构方式,对接口中的功能方法,进行不同方式的实现
网友评论