Java基础学习map(续)

本文详细介绍了Java中的TreeMap和HashMap数据结构及其特性。TreeMap基于红黑树,提供自动升序排序且键唯一,而HashMap基于哈希表,查询增删效率高,两者在键值对存储、扩容机制等方面有显著区别。文章还提到了Hashtable与HashMap的异同,以及如何处理HashMap的线程安全问题。此外,文中还提及了Collections工具类的常用方法和Properties类在处理配置文件中的应用。
摘要由CSDN通过智能技术生成

/*
    TreeMap :
       存储键值对数据,key是唯一的,去重的,无序的(存放的顺序与内部真实存储的顺序不保证一致)

        底层结构 : 红黑树
        特点 : 根据key做自动升序排序(比较器)
        去重与升序排序 :  根据key比较规则做去重与排序
        新增方法 : 新增了一些与比较大小相关的方法

       注意 : Map集合下所有的实现类,去重|排序都是根据key实现的,与value无关

   练习 :
    定义TreeMap集合存储键值对数据
        键为Double类型,值为String类型,测试使用
        键为Employee类型,值为员工所在公司名字,测试使用
 */
    

public static void main(String[] args) {
            //TreeMap<String,Double> map = new TreeMap<>();  使用key的类型的默认比较器进行对键值对key做比较大小,做升序排序
            //TreeMap(Comparator<? super K> comparator) 构造一个新的空树图,根据给定的比较器排序。
            //TreeMap<Person,Double> map = new TreeMap<>(new Impl());  //根据参数传递的比较规则对key做比较去重与排序
    
            //匿名内部类
            /*TreeMap<Person,Double> map = new TreeMap<>(new Comparator<Person>() {
                @Override
                public int compare(Person o1, Person o2) {
                    return o1.getAge()-o2.getAge();
                }
            });*/
    
            //lambda
            TreeMap<Person,Double> map = new TreeMap<>((o1, o2)->{
                    return o1.getAge()-o2.getAge();
            });
    
            map.put(new Person("zhangsan",18),10000.0);
            map.put(new Person("wangwu",27),8888.0);
            map.put(new Person("lisi",26),9999.0);
            map.put(new Person("zhangsan",28),12000.0);
    
            System.out.println(map);
    
            //Map.Entry<K,V> ceilingEntry(K key) 返回与大于或等于给定键的最小键关联的键 - 值映射,如果没有此键,则 null 。
            //K ceilingKey(K key) 返回大于或等于给定键的 null键,如果没有这样的键,则 null 。
    
            System.out.println(map.ceilingKey(new Person("lisi",27)));
            System.out.println(map.get(map.ceilingKey(new Person("lisi",27))));
    
            //Map.Entry<K,V> floorEntry(K key) 返回与小于或等于给定键的最大键关联的键 - 值映射,如果没有此键,则 null 。
            //K floorKey(K key) 返回小于或等于给定键的最大键,如果没有这样的键,则 null 。
            System.out.println("--->"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值