TreeMap是有序的因此添加元素的时候有要求的。
以下是TreeMap的常用操作演示:
//创建一个类qb 实现Comparable接口 给上泛型
class qb implements Comparable<qb>{
private Integer num;
private String type;
//TreeMap使用的是Comparable 或 Comparator 接口 而不是 equals方法
//同时重写compareTo方法
@Override
public int compareTo(qb o){
return this.num-o.num;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
public qb(Integer num, String type) {
this.num = num;
this.type = type;
}
@Override
public String toString() {
return "qb{" +
"num=" + num +
", type='" + type + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof qb)) return false;
qb qb = (qb) o;
return Objects.equals(getNum(), qb.getNum()) &&
Objects.equals(getType(), qb.getType());
}
@Override
public int hashCode() {
return Objects.hash(getNum(), getType());
}
}
public class qq {
public static void main(String[] args) {
//使用Treemap实现一个Map
Map<qb,String> p=new TreeMap<>();
qb qb1=new qb(100,"宝哥");
qb qb2=new qb(600,"旭哥");
qb qb3=new qb(200,"条哥");
qb qb4=new qb(50,"洞主");
p.put(qb1,"1");
p.put(qb2,"2");
p.put(qb3,"3");
p.put(qb4,"4");
//使用内置的keyset()方法获取键的set集合,注意返回的是一个set集合。
Set pkey=p.keySet();
//返回的是一个Object对象 对这个集合进行遍历
for (Object o:pkey
){
System.out.println(o.toString());
}
qb qbx1=new qb(1,"D");
qb qbx2=new qb(100,"GG");
//找TreeMap中键为qbx1的一个对象 找到return true else return false
System.out.println(p.containsKey(qbx1));
//找TreeMap中键为qbx2的一个对象 找到return true else return false
System.out.println(p.containsKey(qbx2));
//get方法获取对应键的值
System.out.println(p.get(qb3).toString());
}
}
HashMap与TreeMap不一样的地方是:
它是无序的所以不需要实现Comparable接口。
其他的用法一样。
想看的HashMap的戳这里