关于Map的知识整理

本文详细介绍了Java中的Map家族,包括HashMap、Hashtable、ConcurrentHashMap、TreeMap和LinkedHashMap。HashMap使用位桶和链表/红黑树实现,JDK1.8后引入红黑树提高效率;Hashtable线程安全但效率较低;ConcurrentHashMap在不同版本中采用不同的同步策略,JDK1.8使用CAS+Synchronized;TreeMap基于红黑树保证Key排序;LinkedHashMap结合链表保持插入顺序或访问顺序。
摘要由CSDN通过智能技术生成

俗话说所有的上层建筑都是建立在基础之上的,所以今天给大家分享一下。

Map家族

Java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMapTreeMap.如下图:
在这里插入图片描述 Map的主要特点是键值对的形式,一一对应,且一个key只对应1个value
1、Map家族之一 ------ HashMap
使用位桶和链表实现(最近的jdk1.8改用红黑树存储而非链表),它是线程不安全的Map,方法上都没有synchronize关键字修饰,具体如下
①.JDK1.7
HashMap是Java中大家最常用的一个map实现类,其为键值对也就是key-value的形式。他的数据结构则是采用的位桶和链表相结合的形式完成了,即拉链法。具体如下图所示:
在这里插入图片描述 HashMap里面存储的是静态内部类Entry的对象,这个对象其实也是一个key-value的结构。以下是Entry的源码:

static class Entry<K,V> implements Map.Entry<K,V> {
        final K key;
        V value;
        /** 指向下一个元素的引用 */
        Entry<K,V> next;
        int hash;

        /**
         * 构造方法为Entry赋值
         */
        Entry(int h, K k, V v, Entry<K,V> n) {
            value = v;
            next = n;
            key = k;
            hash = h;
        }
        ...
        ...
 } 

②.HashMap的存取过程

// 存储时:
int hash = key.hashCode(); // 1个key对应一个固定的hash值
int index = hash % Entry[].length;
Entry[index] = value;

// 取值时:
int has
Java核心知识整理2020年主要包括以下几个方面。 1. Java基础知识:包括Java语法、数据类型、运算符、流程控制、类和对象等基础概念。掌握这些知识是学习和理解其他高级特性的基础。 2. 面向对象编程:Java是一种面向对象的编程语言,掌握面向对象的概念和原则对于理解Java程序设计非常重要。包括封装、继承、多态等概念,以及类的设计和使用。 3. 异常处理:Java提供了异常处理机制,可以处理程序出现的异常情况。掌握异常处理可以提高程序的可靠性和稳定性。 4. 集合框架:Java提供了一套丰富的集合框架,包括List、Set、Map等常用的数据结构和算法。了解集合框架的使用方式和实现原理可以提高程序的效率和可维护性。 5. 多线程编程:Java是一种支持多线程的编程语言,可以同时执行多个任务,提高程序的性能和响应速度。了解线程的概念、创建线程的方法、线程同步和线程间通信的技术是必备的。 6. IO与网络编程:Java提供了强大的IO和网络编程的支持。掌握IO流的读写操作、网络通信的方式和协议可以实现数据的输入输出和网络传输。 7. 数据库连接与操作:Java可以连接各种数据库进行数据的存储和处理。了解数据库连接的方式、SQL语句的编写和执行、事务处理等知识对于开发数据库应用非常重要。 除了以上几个核心知识,还有其他一些高级特性,如反射、注解、泛型、Lambda表达式等,这些特性可以提高代码的灵活性和可重用性。学习这些知识可以帮助开发更加高效和优雅的Java应用。总之,掌握Java核心知识是成为一名优秀的Java开发者的基础,也是在2020年继续发展Java编程技能的关键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值