1.Map集合的每个元素的格式
:key=Value(键值对元素)
2.Map集合常用的API
/**目标:认识Map体系的特点:按照键无序,不重复,无索引.
* */
public static void main(String[] args) {
//1.创建一个map对象
Map<String,Integer> map=new HashMap<>();
map.put("java",10);
map.put("j1",10);
map.put("aa",10);
map.put("张三",10);
map.put("java",10);
map.put("java",10);
//System.out.println(map);
//1.清空
/*map.clear();
System.out.println(map);*/
//2.判断集合是否为空
System.out.println(map.isEmpty());
//3.根据键获取值
System.out.println(map.get("java"));
//4.删除键的整个元素
System.out.println(map.remove("java"));
System.out.println(map);
//5.判断是否包含某个键,包含则返回true
System.out.println(map.containsKey("java"));
//6.判断是否包含某个值
System.out.println(map.containsValue(10));
//7.获取全部键集合
System.out.println(map.keySet());
//8.获取全部值集合
System.out.println(map.values());
//9.集合的大小
System.out.println(map.size());
//10.合并其他Map集合
Map<String,Integer> map2=new HashMap<>();
map2.put("java",10);
map2.put("j1",10);
Map<String,Integer> map3=new HashMap<>();
map3.put("aa",10);
map3.put("张三",10);
//把map3的元素复制一份给map2
map2.putAll(map3);
System.out.println(map2);
System.out.println(map3);
}
3.遍历Map集合的三种方式
①键找值的方式遍历
//1.创建一个map对象
Map<String,Integer> maps=new HashMap<>();
maps.put("java",10);
maps.put("j1",10);
maps.put("aa",10);
maps.put("张三",10);
//第一种:键找值的方式遍历
//提取所有的键
Set<String> keys = maps.keySet();
for (String key : keys) {
Integer value=maps.get(key);
System.out.println(key+"-->"+value);
}
②把Map集合转换成Set集合
Set<Map.Entry<String, Integer>> entries = maps.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
String key=entry.getKey();
Integer value=entry.getValue();
System.out.println(key+"---"+value);
}
③Lambda表达式进行遍历
//1.创建一个map对象
Map<String,Integer> maps=new HashMap<>();
maps.put("java",10);
maps.put("j1",10);
maps.put("aa",10);
maps.put("张三",10);
//使用foreach方法
maps.forEach(new BiConsumer<String, Integer>() {
@Override
public void accept(String key, Integer value) {
System.out.println(key+"-->"+value);
}
});
4.HashMap的特点和底层原理
- HashMap是Map里面的一个实现类.特点是由键决定的:无序,不重复,无索引;
- 直接使用Map的方法, 没有额外的特有方法;
- HashMap的底层原理和HashSet一样,都是哈希表结构;
- 依赖hashCode方法和equals方法保证键唯一
- Set系列集合底层都是Map实现的,只是Set集合中的元素只要键数据,不要值数据而已
- 基于哈希表,增删改查性能较好
5.Map集合嵌套练习
//Map集合的嵌套练习
public static void main(String[] args) {
Map<String, List<String>> date = new HashMap<>();
List<String> select1 = new ArrayList<>();
Collections.addAll(select1, "A", "B", "C");
date.put("张三", select1);
List<String> select2 = new ArrayList<>();
Collections.addAll(select2, "B", "C");
date.put("李四", select2);
List<String> select3 = new ArrayList<>();
Collections.addAll(select3, "C");
date.put("王五", select3);
//System.out.println(date);
//提取Map集合的全部值
Collection<List<String>> info = date.values();
System.out.println(info);
//定义一个Map集合记录每个景点出现的次数
Map<String, Integer> result = new HashMap<>();
//遍历景点信息
for (List<String> selects : info) {
//遍历每个景点的信息
for (String select : selects) {
if (result.containsKey(select)) {
result.put(select, result.get(select) + 1);
} else {
result.put(select, 1);
}
}
}
System.out.println(result);
}