Java基础-TreeMap的简单使用

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);
    }
}

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.二丫.

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值