TreeMap的使用
- 实现了SortedMap接口(是Map的子接口),可以对key自动降序
package gather;
public class Student implements Comparable<Student>{
private String name;
private int stuNo;
public Student() {
}
public Student(String name, int stuNo) {
this.name = name;
this.stuNo = stuNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getStuNo() {
return stuNo;
}
public void setStuNo(int stuNo) {
this.stuNo = stuNo;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", stuNo=" + stuNo +
'}';
}
@Override
public int compareTo(Student o) {
int n1 = this.stuNo-o.getStuNo();
return n1;
}
}
package gather;
import sun.reflect.generics.tree.Tree;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Demo15 {
public static void main(String[] args) {
TreeMap<Student, String> treeMap = new TreeMap<>();
//刚创建hashmap之后没有添加元素table为null size为0 (定制比较)
//1.添加元素
Student s1 = new Student("孙悟空",100);
Student s2 = new Student("猪八戒",101);
Student s3 = new Student("沙和尚",102);
treeMap.put(s1,"北京");
treeMap.put(s2,"上海");
treeMap.put(s3,"杭州");
treeMap.put(new Student("沙和尚",102),"南京");
System.out.println(treeMap.size());
System.out.println(treeMap);
//2.删除
// treeMap.remove(s3);
// treeMap.remove(new Student("猪八戒",101));//这样也能删除,重写compareTo后比较的是学号,学号相同,则删除
// System.out.println(treeMap.size());
//3.遍历
//3.1使用keySet遍历
for (Student key:treeMap.keySet()) {
System.out.println(key+"------"+treeMap.get(key));
}
//3.2使用entrySet遍历
for (Map.Entry<Student,String> entry:treeMap.entrySet()){
System.out.println(entry.getKey()+"-----"+entry.getValue());
}
//4.判断
System.out.println(treeMap.containsKey(new Student("孙悟空", 100)));//true,因为重写了compareTo方法
}
}