文章摘要:
小白零基础快速入门Java —— 第十二课:集合框架之双列集合Map。本文介绍了以下内容:1、双列集合Map的概述。2、常用方法。3、遍历方式。4、HashMap。5、LinkedHashMap。6、TreeMap。7、补充知识:集合的嵌套。
1、概述
// Map<String, Integer> map = new HashMap<>(); // 一行经典代码,按照键 无序,不重复,无索引
Map<String, Integer> map = new LinkedHashMap<>(); // 有序,不重复,无索引
map.put("10", 1);
map.put("10", 11); // 后面重复的数据会覆盖前面的数据(键)
map.put("20", 2);
map.put("30", 3);
map.put("40", 4);
map.put("50", 5);
map.put(null, null);
System.out.println(map);
Map<Integer, String> map1 = new TreeMap<>(); // kep序,不重复,无索引
map1.put(23, "1");
map1.put(23, "12");
map1.put(13, "2");
map1.put(14, "3");
map1.put(10, "4");
System.out.println(map1);
运行结果:
2、常用方法
3、遍历方式
3.1 键找值
Map<String, Integer> map = new HashMap<>(); // 一行经典代码,按照键 无序,不重复,无索引
map.put("10", 1);
map.put("20", 2);
map.put("30", 3);
map.put("40", 4);
map.put("50", 5);
// 1、获取Map集合的全部键
Set<String> keys = map.keySet();
System.out.println(keys);
// 2、遍历全部的键,根据键获取其对应的值
for (String key : keys) {
int value = map.get(key);
System.out.println(key + "=======>" + value);
}
运行结果:
3.2 键值对
3.3 Lambda
map.forEach(new BiConsumer<String, Integer>() {
@Override
public void accept(String k, Integer v) {
System.out.println(k + "---->" + v);
}
});
//简化
map.forEach((k, v) -> {
System.out.println(k + "---->" + v);
});
3.4 案例
4、HashMap
5、LinkedHashMap
6、TreeMap
//方法一
public class Student implements Comparable<Student>{
String name;
int age;
@Override
public int compareTo(Student o) {
// 左 > 右 return 正数
// 左 < 右 return 负数
// 左 = 右 return 0
// 要求: 按照年龄升序排序 return this.age - o.age
// 降序 return o.age - this.age
return this.age - o.age;
}
//方法二
//TreeMap就近选择自己自带的比较器对象进行排序
Map<Student, String> map = new TreeMap<>(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
//按照身高升序排序
return Double.compare(o1.getHeight(), o2.getHeight());
}
})
//简化
Map<Student, String> map = new TreeMap<>((o1, o2) -> Double.compare(o1.getHeight(), o2.getHeight()));
7、补充知识: 集合的嵌套
集合的嵌套:指的是集合中的元素又是一个集合
Map<String, List<String>> map = new HashMap<>();
List<String> cities = new ArrayList<>();
Collections.addAll(cities, "南京", "扬州", "苏州", "无锡", "常州");
map.put("江苏省", cities);
System.out.println(map);
List<String> city = map.get("江苏省");