![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 92
java.雅玲
IT互联网
展开
-
Java数据结构 — Map
常用Map:Hashtable、HashMap、LinkedHashMap、TreeMap类继承关系:HashMap1)无序;2)访问速度快;3)key不允许重复(只允许存在一个null Key);LinkedHashMap1)有序;2)HashMap子类;TreeMap1)根据key排序(默认为升序);2)因为要排序,所以key需要实现 Comparable接口,否则会报ClassCastException 异常;3)根据key的compareTo 方法判断key是否重原创 2021-02-07 21:32:27 · 379 阅读 · 0 评论 -
Java集合 — HashSet的原理及常用方法
一. HashSet概述HashSet是Java集合Set的一个实现类,Set是一个接口,其实现类除HashSet之外,还有TreeSet,并继承了Collection,HashSet集合很常用,同时也是程序员面试时经常会被问到的知识点,下面是结构图public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{}原创 2021-02-07 14:19:20 · 315 阅读 · 0 评论 -
LinkedHashMap如何保证顺序性
一. 前言先看一个例子,我们想在页面展示一周内的消费变化情况,用echarts面积图进行展示。如下:我们在后台将数据构造完成HashMap<String, Integer> map = new HashMap<>();map.put("星期一", 40);map.put("星期二", 43);map.put("星期三", 35);map.put("星期四", 55);map.put("星期五", 45);map.put("星期六", 35);map.put("星原创 2021-02-06 22:58:04 · 2921 阅读 · 0 评论 -
Java集合 LinkedList的原理及使用
LinkedList和ArrayList一样是集合List的实现类,虽然较之ArrayList,其使用场景并不多,但同样有用到的时候,那么接下来,我们来认识一下它。一. 定义一个LinkedListpublic static void main(String[] args) { List<String> stringList = new LinkedList<>(); List<String> tempList = new ArrayList<&原创 2021-02-06 22:37:32 · 196 阅读 · 0 评论 -
TreeMap原理实现及常用方法
一. TreeMap概述TreeMap存储K-V键值对,通过红黑树(R-B tree)实现;TreeMap继承了NavigableMap接口,NavigableMap接口继承了SortedMap接口,可支持一系列的导航定位以及导航操作的方法,当然只是提供了接口,需要TreeMap自己去实现;TreeMap实现了Cloneable接口,可被克隆,实现了Serializable接口,可序列化;TreeMap因为是通过红黑树实现,红黑树结构天然支持排序,默认情况下通过Key值的自然顺序进行排序;二.原创 2021-02-06 22:09:43 · 3308 阅读 · 0 评论 -
HashMap原理 — 扩容机制及存取原理
回顾一下基本概念:table变量:HashMap的底层数据结构,是Node类的实体数组,用于保存key-value对;capacity:并不是一个成员变量,但却是一个必须要知道的概念,表示容量;size变量:表示已存储的HashMap的key-value对的数量;loadFactor变量:装载因子,用于衡量满的程度;threshold变量:临界值,当超出该值时,表示table表示该扩容了;一. put方法HashMap使用哈希算法得到数组中保存的位置,然后调用put方法将key-value原创 2021-02-05 23:02:19 · 272 阅读 · 0 评论 -
HashMap原理 — 概念和底层架构
HashMap在Java开发中使用的非常频繁,可以说仅次于String,可以和ArrayList并驾齐驱,准备用几个章节来梳理一下HashMap。我们还是从定义一个HashMap开始。HashMap<String, Integer> mapData = new HashMap<>();我们从此处进入源码,逐步揭露HashMap/** * Constructs an empty <tt>HashMap</tt> with the default ini原创 2021-02-05 22:46:20 · 128 阅读 · 1 评论 -
【Java 并发】详解 ThreadLocal
前言ThreadLocal 主要用来提供线程局部变量,也就是变量只对当前线程可见,本文主要记录一下对于 ThreadLocal 的理解。更多关于 Java 多线程的文章可以转到 这里。线程局部变量在多线程环境下,之所以会有并发问题,就是因为不同的线程会同时访问同一个共享变量,例如下面的形式public class MultiThreadDemo { public static class Number { private int value = 0; pu原创 2021-01-28 22:37:31 · 122 阅读 · 0 评论 -
java深度搜索与广度优先搜索
图结构展示:实现过程:首先,我们来看看图结构在代码中的实现。有三块逻辑:1.图中的节点:[java] view plain copyprint?public class GraphNode { public List<GraphEdge> edgeList = null; private String label = ""; public GraphNode(String label) { this原创 2021-01-27 23:04:52 · 273 阅读 · 0 评论 -
Java中常见数据结构Map之HashMap
一:JDK7中的HashMap:HashMap底层维护一个数组table, 数组中的每一项是一个key,value形式的Entry。我们往HashMap中所放置的对象实际是存储在该数组中。Map中的key,value则以Entry的形式存放在数组中。这个Entry应该放在数组的哪一个位置上, 是通过key的hashCode来计算的。这个位置也成为hash桶。通过hash计算出来的值将通过indexFor方法找到它所在的table下标:这个方法其实是对table.length取模, 当两个原创 2021-01-26 21:57:06 · 305 阅读 · 0 评论