Map的特点
- 存储两个对象。分别是:键(Key)和值(Value)
- 存储的键必须是唯一的。(键不能重复,值没有要求)
- 一个键只能对应一个值。
- 允许存储null元素,但是键最多只能有一个null
- 没角标、不能直接迭代遍历(不支持循环遍历)
- Map中的键与值采用一一对应的关系,存储的是两个元素的集合,也被称为双列集合
map类常用的方法
put:将一组键值对放入map中,如果出现相同的键,后出现的值会覆盖前面的值,空返回值类型
containsKey:判断是否包含给定的key值,boolean返回值类型
containsValue:判断是否包含给定的value值,boolean返回值类型
remove:根据value删除对应的键值对
get:通过key值找到对应的value值;
keySet:用来获取map集合中的所有key值,返回一个set对象
- 这个方法常用来遍历map时使用,获取了所有的key值,就可以通过get方法获取对应的value值。
案例:
public static void main(String[] args) {
Map map = new HashMap();
map.put("aaa","AAA");
map.put("bbb","BBB");
map.put("ccc","CCC");
Set set = map.keySet();
Iterator it = set.iterator();
while(it.hasNext()) {
Object key = it.next();
System.out.println(key+"---"+map.get(key));
}
}
执行结果:
aaa---AAA
ccc---CCC
bbb---BBB
entrySet:返回一个包含所有键值对映射关系的set集合,将map集合保存在set中
案例:
public static void main(String[] args) {
// 创建Map集合对象
HashMap<String, String> map = new HashMap<String,String>();
// 添加元素到集合 map.put("胡歌", "霍建华");
map.put("郭德纲", "于谦");
map.put("薛之谦", "大张伟");
// 获取 所有的 entry对象
Set<Entry<String,String>> entrySet = map.entrySet();
// 遍历得到每一个entry对象
for (Entry<String, String> entry : entrySet) {
// 解析
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"的CP是:"+value);
}
}
values:获取Map中所有的value元素
HashMap
实现了Map接口,底层结构基于哈希表,允许null值和null键,不保证映射的顺序,并且不保证该顺序恒久不变。
要想实现HashMap,需要先再实体类中重写 hashcode和equals方法
HashMap的常用方法大部分在Map中实现了,其他方法可以在API中查看
TreeMap
实现了Map方法,存储的键值对映射关系会根据key元素自动排序,排序分为两种,自然排序和比较器排序