数据结构
文章平均质量分 80
李小白lt
kotlin yyds
展开
-
JVM中性能更好的ArrayList<Int>
前言众所周知,kotlin中有ArrayList<Int>,Array<Int>,IntArray,可他们都有什么区别呢?为什么要有这么多大致相同的类型?正文我们先看一下他们相对于jvm中的类型ArrayList<Int> = ArrayList<Integer>Array<Int> = Integer[]IntArray = int[]可以看出来前面两种都用到了int的包装类型Integer,而IntArray是用的基原创 2022-05-31 16:58:30 · 610 阅读 · 0 评论 -
数据结构特性解析 (五)hash表
前言hash表是编程中常用的数据结构,也是时间复杂度较低的数据结构,一般来说从hash表中取数据的时间复杂度定义为接近常量O(1),为什么取数据如此高效呢,数据是怎么存的呢?接下来来分析下正文hash表的内部数据结构为数组,但存储数据并不是顺序存储的,而是由hash算法+分配索引算法来分配索引比如我要存储int类型的数据,数据为1-10,hash算法为他自身即为hash值,分配算法为求余算法,这时申请一个长度为10的数组,图示如下优缺点...原创 2021-04-30 14:56:05 · 356 阅读 · 0 评论 -
数据结构特性解析 (四)LinkedList
描述LinkedList应该也是开发中比较常用的数据结构了,其基于链表数据结构实现,添加和删除效率相对比较高,而随机访问效率偏低特点1.LinkedList是双向不循环链表通过查看链节点类: private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E eleme原创 2020-12-19 16:01:21 · 343 阅读 · 2 评论 -
数据结构特性解析 (三) 链表
前言链表是一种比较简单的数据结构,你可以在编程环境下轻松写出一个链表,甚至生活中也有很多链表的提现,比如铁链,文章底部的下一篇上一篇都可以称作链表数据结构描述链表像铁链一样,一个链节点连着另一个或另两个节点.在计算机中,一般是每一个节点除了存储自身的信息外,还会存储另一个节点的内存地址,相当于链接到下一个节点,如下图所示(红色是链表的节点,黑色是被其他数据占用的内存)可以看到链表可以不按照顺序存,只需要指向下一个地址特点1.链表相对于数组,内存占用更高上面的代码就原创 2020-06-30 17:44:21 · 3389 阅读 · 2 评论 -
数据结构特性解析 (一) 数组
前言数组是java中最基本的数据结构,有很多更高级的数据接口实现方式都是使用的数组,所以了解数组是很重要的描述数组是一个对象,内部有一块连续的内存,自身只占用很小的内存,其他位置都是根据长度和类型而分配的值对象或者引用值对象特点1. 数组长度在初始化时确定且无法修改由上图可见,数组并没有add或修改长度的方法2.数组每个位置所占的内存大小是在初始化时固定的数组中...原创 2019-09-30 16:10:34 · 364 阅读 · 1 评论 -
数据结构特性解析 (二) ArrayList
前言ArrayList可能是Java中使用次数最多的数据结构了,因此了解其特性能比较重要描述ArrayList是一个数组队列,相当于动态数组.与Java中的数组相比,它的容量能动态增长.并且ArrayList还有一些添加,遍历和移除的操作特点1.ArrayList内部实现是利用Java的数组这是内部存储数据的Object数组add方法的实现方式,根据源码可以看到...原创 2020-02-29 20:22:38 · 325 阅读 · 1 评论