我们前面讲过List 集合,但会发现当我们需要通过一个条件查集合中的结果时非常麻烦。而Map这个就能解决这个问题,因为Map是一个键值对存储,因为有一个键是唯一的,所以它有点类似数据库表中增加一个主键(也可以理解为索引).List 是通过add方法添加数据的,而Map是通过put方法增加并给相应的主键值的形式处理。而获取是通过get并给相应的键值得到结果。
在这里做一个简单的例子
准备类
class Stu implements Comparator<Stu> {
private String name;
private int age;
public Stu() {
}
public Stu(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compare(Stu stu, Stu t1) {
return stu.getAge()-t1.getAge();
}
@Override
public String toString() {
return "Stu{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Stu stu = (Stu) o;
return age == stu.age &&
name.equals(stu.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
实现
Map<String, Stu> st = new HashMap<>();
st.put("XH001", new Stu("张", 12));
st.put("XH002", new Stu("李", 15));
st.put("XH003", new Stu("赵", 22));
st.put("XH004", new Stu("刘", 16));
Stu stu=st.get("XH002");
System.out.println(stu.getName());
一句话根据Map 是用一个值做为索引的集合,索引是不能重复的,如果重复给一个索引值的话会替换原来的值。