• day22每日一考


    day22每日一考

    题目

    1.Map存储数据的特点是什么?并指明key,value,entry存储数据的特点。
    2.描述HashMap的底层实现原理(jdk8版)
    3.Map中常用实现类有哪些?各自有什么特点?
    4.如何遍历Map中的key-value对,代码实现
    5.Collection和Collections的区别?

    答案

    Map存储数据的特点是一对一对的存储(key-value)键值对,无序性

    key是由Set进行存储,无序性,单个存储,不可重复的

    value是Collection进行存储,无序的,可重复的

    entry是无序的,不可重复的,Set进行存储,存储的key-value键值对

    HashMap在jdk8底层是由链表+数组+红黑树

    在底层没有创建一个数组为16的数组,底层数组为Node[]

    首次调用put()方法时,底层创建数组长度为16的数组

    先计算key所在类的hashcode值来确定需要在数组存放的位置

    如果位置上没有数据,k-v键值对添加成功

    如果位置上有数据,那么比较key的hashcode值和所在位置hashcode值

    ​ 如果不相等,k-v键值对添加成功

    ​ 如果有数据,调用key1所在类的equals(key2)方法

    ​ 如果不相等,此时键值对存储成功

    ​ 如果相等,那么就将value与链表相同位置的value值进行替换

    当链表上存储的数据个数大于8且当前数组长度大于64时,此时此索引位置上的所有数据改为红黑树存储

    HashMap:无序性,Map的主要实现类,线程不安全,效率高,存储null的key和value,底层数组+链表

    ​ LinkedHashMap:可以按照元素输入顺序进行遍历,在HashMap的基础上添加指针,一个指向前一个,一个指向后一个

    ​ 频繁的进行遍历,效率要高于HashMap

    TreeMap:可以按照自己的情况进行排序,底层使用红黑树进行存储,此时考虑key的自然排序与定制排序

    Hashtable:Map的古老实现类,线程安全,效率低,不能存储null的key和value

    ​ properties:常用于配置文件。key-value都要使用String类型

    public class MapTest {
        public static void main(String[] args) {
            HashMap hashMap = new HashMap();
            hashMap.put("A", 123);
            hashMap.put("A1", 0);
            hashMap.put("A2", 7);
            hashMap.put("A3", 5);
            hashMap.put("A4", 4);
            Set set = hashMap.entrySet();
            Iterator iterator = set.iterator();
    
            while (iterator.hasNext()) {
                Map.Entry entry = (Map.Entry) iterator.next();
                System.out.println(entry.getKey() + "-------" + entry.getValue());
            }
            System.out.println(hashMap);
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    Collection是常用的集合接口,用于存储单列集合,有常用的list和set类

    Collections操作Collection和Map的工具类

  • 相关阅读:
    vxe Table 复选框分页数据记忆选中问题
    第4章 进程同步
    Python图像处理【22】基于卷积神经网络的图像去雾
    一直出现问题,发现服务器磁盘空间已满导致,腾出服务器磁盘空间命令
    Linux教程:如何安装redis服务并搭建三主三从集群部署环境
    uniapp制作h5小程序中双列下拉查询
    同步辐射散射测试中影响效果的原因有哪些?
    数据湖:OPPO数据湖统一存储技术实践
    【web前端期末大作业】基于html关爱空巢老人网页设计与实现
    2022年前端还好找工作吗?
  • 原文地址:https://blog.csdn.net/m0_47711130/article/details/126103112