LinkedHashMap深度解析

本文详细解析了LinkedHashMap的实现机制和源码,介绍了其作为有顺序的HashMap的特点,包括插入和访问顺序,并通过实例展示了其使用场景。文章还探讨了LinkedHashMap如何维护双向链表以确保顺序性,以及其与HashMap在数据结构和操作上的区别。
摘要由CSDN通过智能技术生成

概述

在平时开发的过程中,大部分都是使用HashMap存储key value结构的数据,但是它是没有顺序的,如果你想要一个有顺序的Map,这时候LinkedHashMap就闪亮登场, 本篇文章主要基于jdk1.8学习下LinkedHashMap的功能和原理。在学习LinkedHashMap你需要对HashMap底层实现和源码有一定了解。

介绍

LinkedHashMap是一个有顺序的Hash表,它可以是元素插入顺序或者访问顺序。

  • LinkedHashMap最大的特点是有顺序的
  • LinkedHashMap的key 和value都可以为空
  • LinkedHashMap不是线程安全


 

以上是LinkedHashMap的类结构图:

  • 继承了HashMap,在HashMap的功能基础上,增加了访问顺序的能力

使用案例

LinkedHashMap基于插入顺序

@Test
    public void test1() {
        // 创建默认的 LinkedHashMap
        Map<String, String> map = new LinkedHashMap<>();
        // 插入
        map.put("1", "1");
        map.put("2", "2");
        map.put("5", "5");
        map.put("4", "4");
        System.out.println(map);

        // 访问
        map.get("2");
        map.get("1");

        System.out.println(map);
    }

 运行结果:

 

小结:

  1. 默认LinkedHashMap是维护插入顺序,访问不会改变顺序

LinkedHashMap基于插入顺序和访问顺序

@Test
    public void test2() {
        // 创建 LinkedHashMap, accessOrder设置为true
        Map<String, String> map = new LinkedHashMap<String, String>(16, 0.75f, true);
        // 插入
        map.put("1"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值