数据结构 & Java中的内存
2021-04-13 18:28
标签:超出 红黑树 封装 图片 first lse dha 信息 mic 根据线性表的实际存储方式,分为两种实现模型: 在Java中,顺序表的结构主要有:数组、ArrayList ArrayList 的 本质是对 数组Object[ ] 的封装,将该数组作为它的一个属性。元素存储在 数组中 对 ArrayList 的操作,实际上也是,用数组工具类---Arrays 来封装数组的CRUD以及排序等操作方法 在 JDK 中对数组的操作主要是 Arrays 类。其中 参考:https://www.cnblogs.com/baichunyu/p/11935995.html 链表 中主要由 节点 组成,每个 节点 都存储元素 以及其他节点的地址(如:前后节点的地址)。 链表 的 CRUD 操作都要从头遍历到 指定的索引处(因为链表的存储不是连续的,所以时间复杂为 O(n) )。对节点的插入、删除操作,并不需要对后续的元素调整位置,只是修改相关节点指向其他节点的指针。 一般链表的排序思路:(如:LinkedList) 在 Java 中,单向链表 的数据结构 主要有:HashMap HashMap 由 数组 + 单向链表(or 红黑树) 组成,HashMap的 Entry实体类(存储键值对的实体) 组成单向链表 在 Java 中,双向链表 的数据结构 主要有:LinkedList、LinkedHashMap LinkedList 用内部类--Node来作为节点。 LinkedList 有 first 和 last 属性,所以在 LinkedList 的头尾操作时,时间复杂度为O(1); 链表的最后一个节点指向链表的 头节点。举例:略! 在 Java 中,单向链表 的数据结构 主要有:LinkedHashMap LinkedHashMap 中 栈 -- 先进后出 栈的实现:?栈可以用顺序表实现,也可以用链表实现。 单向队列 -- 先进先出。双向队列 -- 可从两端进,两端出 队列的实现(同栈一样):?栈可以用顺序表实现,也可以用链表实现。 栈(Stack):存放的都是方法的 局部变量。方法的运行一定要在栈中运行。 堆(Heap):凡是 new 出来的东西,都在 堆 当中。(如果是在方法内定义的引用类型的局部变量,该引用类型的对象 是在堆中,该对象的变量名 是 在栈中,且变量名存储的是 对象地址 -- 该对象在堆中的地址) 方法区:存储 与操作系统相关 与 CPU 相关 数据结构 & Java中的内存 标签:超出 红黑树 封装 图片 first lse dha 信息 mic 原文地址:https://www.cnblogs.com/roronoa-wang/p/13339677.html
一、顺序表
CRUD
排序:
Arrays.sort()
有多种重载方式。在对整型(int) 进行排序时,主要使用到了 插入排序、快速排序、归并排序
二、链表
CRUD
排序
1、单向链表
2、双向链表
3、单向循环链表
4、双向循环列表
三、栈
四、队列
五、堆
六、树
Java中的内存划分
1、栈
2、堆
‘\u0000’
null
3、方法区
.class
相关信息,包括方法的信息(即,方法的定义等)4、本地方法栈
5、寄存器