TreeMap 表示可以排序的Map子类, 它是按照key的内容进行排序的
范例: 观察 TreeMap的使用
package com.beyond.nothing;
import java.util.Map;
import java.util.TreeMap;
public class test {
public static void main(String[] args) {
Map<Integer, String> map = new TreeMap<>();
map.put(1, "B");
map.put(0, "C");
map.put(2, "A");
System.out.println(map);
}
}
范例: 使用 TreeMap 输出, 使用自定义 key
package com.beyond.nothing;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;
class Person implements Comparable<Person>{
private String name;
public Person(String name) {
this.name = name;
}
@Override
public String toString() {
return "姓名: " + this.name;
}
@Override
public int compareTo(Person o) {
return this.name.compareTo(o.name);
}
}
public class test {
public static void main(String[] args) {
Map< Person, String> map = new TreeMap<>();
map.put(new Person("张三"), new String("zs"));
System.out.println(map.get(new Person("张三")));
}
}
结论: 有 Comparable 出现的地方, 判断数据就依靠 compareTo() 方法完成, 就不需要使用 hashCode() 和 equals() 方法了, 这类操作一般也不参加. 一般也是 String, Integer, 而这两个类也都是 Comparbale 接口的子类
总结:
- Collection 保存数据的目的是为了输出, Map 保存数据的目的是为了根据 key 查找, 找不到key 返回 null
- Map 使用 Iterator 输出, 要理解 Map.Entry 的作用
- 一些类的设计原理, 在我们的开发之中大部分使用的还是 HashMap .