TreeMap的简单使用
List集合体现在数组,Set集合体现在排序重复方面,Map集合体现在键值对或者名值对
- Map集合
键值对/名值对,把每一个键值对看作是集合的一个元素
键不可以重复 值可以重复 如果键重复值将会被覆盖
map集合中键是最主要的,所以一般不会选择整数来作为键,因为整数没有办法很好的描述当前值* - TreeMap集合
键不能重复,而且最后还是按照键的大小排序
结果是有序的按照 键 大小排序,那么排序规则是 比较器
Domejava 文件
public class Demo {
public static void main3(String[] args) {
TreeMap<Dog,Integer> map = new TreeMap<>();//对Dog类实现Comparable接口和CompareTo方法的实现
map.put(new Dog("abc",22),68);
map.put(new Dog("acd",25),77);
map.put(new Dog("asc",23),15);
System.out.println("map = " + map);//如果不对Dog类实现Comparable接口和CompareTo方法则会报ClassCastException错误 因为Dog类对象没有比较器方法无法进行比较
}
public static void main2(String[] args) {
/*
TreeMap<String, String> map = new TreeMap<>();
//String类型的键能够很好的描述当前值
map.put("姓名","张三");
System.out.println("map = " + map);
*/
TreeMap<String, Integer> map = new TreeMap<>();
map.put("abc",15);
map.put("aac",55);
map.put("acd",23);
map.put("cda",42);
System.out.println("map = " + map);//map = {aac=55, abc=15, acd=23, cda=42}
//结果是有序的 按照键的大小来排序
}
public static void main1(String[] args) {
TreeMap<Integer, String> map = new TreeMap<>();
//增加元素
map.put(5, "大奖");
map.put(4, "大jiang");
map.put(3, "dajiang");
//一次增加一个map集合
//map.putAll(map);
//移除元素 根据键移除值 返回被移除的值
//map.remove(3);
//根据键值对组合移除 返回Boolean是否移除成功
//map.remove(4,"大jiang");
//修改元素
//键一样 值覆盖
//map.put(3,"大疆");
//根据键获取元素
//System.out.println(map.get(3));
//map.firstKey();//获取当前集合的第一个元素
//map.lastKey();//获取当前集合的最后一个元素
//map.lowerKey();//获取小于当前给定元素键值的最大值
//map.higherKey();//获取大于当前给定元素键值的最小值
System.out.println(map);//{3=dajiang, 4=大jiang, 5=大奖}
}
}
Dog.java文件
public class Dog implements Comparable<Dog>{
public String name;
public int age;
public Dog(){
}
public Dog(String name, int age) {
super();
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 "TreeMap.Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
//我们自己写的比较器
@Override
public int compareTo(Dog dog) {
if(age > dog.age){
return 1;
}
if(age <dog.age){
return -1;
}
return name.compareTo(dog.name);
}
}