TreeMap
TreeMap
概述
TreeMap实现了SortedMap接口(是Map的子接口),可以对key自动排序
底层是红黑树
实践
package com.qianfeng.collection;
import java.util.Map;
import java.util.TreeMap;
/**
* 功能描述
*
* @since 2022-05-17
*/
public class TreeMapDemo {
public static void main(String[] args) {
TreeMap<Teacher, String> treeMap = new TreeMap();
Teacher t1 = new Teacher("zhangsan", 20);
Teacher t2 = new Teacher("lisi", 20);
Teacher t3 = new Teacher("wangwu", 20);
treeMap.put(t1, "shanghai");
treeMap.put(t2, "beijing");
treeMap.put(t3, "nanjing");
System.out.println(treeMap);
treeMap.remove(new Teacher("wangwu", 20));
for (Teacher key : treeMap.keySet()) {
System.out.println(key + "============" + treeMap.get(key));
}
for (Map.Entry entry :
treeMap.entrySet()) {
System.out.println(entry.getKey() + "============" + entry.getValue());
}
System.out.println(treeMap.containsKey(new Teacher("lisi", 20)));
System.out.println(treeMap.isEmpty());
}
}
class Teacher implements Comparable<Teacher> {
private String name;
private int age;
public Teacher(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Teacher{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Teacher o) {
int n1 = age - o.age;
int n2 = name.compareTo(o.name);
return n1 == 0 ? n2 : n1;
}
}
package com.qianfeng.collection;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
/**
* 功能描述
*
* @since 2022-05-17
*/
public class TreeMapDemo2 {
public static void main(String[] args) {
TreeMap<Teacher1, String> treeMap = new TreeMap(new Comparator<Teacher1>() {
@Override
public int compare(Teacher1 o1, Teacher1 o2) {
int n1 = o1.getName().compareTo(o2.getName());
int n2 = o2.getAge() - o2.getAge();
return n1 == 0 ? n2 : n1;
}
});
Teacher1 t1 = new Teacher1("zhangsan", 20);
Teacher1 t2 = new Teacher1("lisi", 20);
Teacher1 t3 = new Teacher1("wangwu", 20);
treeMap.put(t1, "shanghai");
treeMap.put(t2, "beijing");
treeMap.put(t3, "nanjing");
System.out.println(treeMap);
treeMap.remove(new Teacher1("wangwu", 20));
for (Teacher1 key : treeMap.keySet()) {
System.out.println(key + "============" + treeMap.get(key));
}
for (Map.Entry entry :
treeMap.entrySet()) {
System.out.println(entry.getKey() + "============" + entry.getValue());
}
System.out.println(treeMap.containsKey(new Teacher1("lisi", 20)));
System.out.println(treeMap.isEmpty());
}
}
class Teacher1 {
private String name;
private int age;
public Teacher1(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Teacher{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}