Java堆、栈和队列

简介: Java堆、栈和队列

栈:后进先出,即最后被压入(push)栈的元素会被第一个弹出来(pop) 不考虑排序

堆栈—》数组讲解

数组数据结构分析

数组字实际开发中越来越被集合取代了。

现在一些算法和数据结构还在用数组外,集合被广泛的使用

数组的长度是固定的

这里的= 是把数组对象内存地址赋予给arr变量


栈内存特点:存储的都是局部变量,变量一旦出了自己的作用域就会马上消失,释放内存


然后用new出来的对象,jvm都会在堆内存中开辟一个新的空间,创建新对象


堆内存特点:

堆内存存的都是对象数据,对象一旦使用完,不会马上从内存中消失,

而是要等到垃圾回收器如GC不定时把垃圾对象回收,这个时候才会释放出内存。


垃圾对象:没有变量引用了。


堆分为最大堆、最小堆,在最大堆中根节点的值最大,在最小堆中根节点的值最小。有很多需要用解决最大小值的问题可以用堆来解决。


算法用的更多的是二维数组


int [][] a = new int [3][4];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = ++ value;
}
}


队列:先进先出,即第一个进入队列的元素将会第一个出来 考虑排序

实现队列也有两种方式,一种是链表, 另一种是循环数组

队列和栈在实现上的不同


栈遵循后进先出的原则,所以要在数组或链表同一端做添加和删除操作

队列遵循先进先出的原则, 所以要在数组或链表的两端分别做插入和删除的操作


相关文章
|
6天前
|
Java 索引
java中的栈(利用数组实现栈)
这篇文章通过Java代码示例介绍了如何使用数组实现栈操作,包括栈的初始化、入栈、出栈、判断栈满和空以及遍历栈的方法。
java中的栈(利用数组实现栈)
|
6天前
|
Java
java中的队列
这篇文章通过Java代码示例介绍了使用数组实现队列操作,包括队列的初始化、入队、出队、判断队列满和空以及遍历队列的方法。
java中的队列
|
26天前
|
Java 运维
开发与运维命令问题之使用jstack命令查看Java进程的线程栈如何解决
开发与运维命令问题之使用jstack命令查看Java进程的线程栈如何解决
28 2
|
1月前
|
存储 Java 程序员
Java面试题:方法区在JVM中存储什么内容?它与堆内存有何不同?
Java面试题:方法区在JVM中存储什么内容?它与堆内存有何不同?
48 10
|
1月前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之使用ODPS Tunnel Upload功能时,遇到报错:Java 堆内存不足,该如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
存储 安全 Java
Java面试题:在JVM中,堆和栈有什么区别?请详细解释说明,要深入到底层知识
Java面试题:在JVM中,堆和栈有什么区别?请详细解释说明,要深入到底层知识
47 3
|
1月前
|
存储 缓存 监控
Java面试题:解释堆和栈的OutOfMemoryError通常在什么情况下会发生
Java面试题:解释堆和栈的OutOfMemoryError通常在什么情况下会发生
30 3
|
20天前
|
存储 Java 对象存储
Java虚拟机(JVM)中的栈(Stack)和堆(Heap)
在Java虚拟机(JVM)中,栈(Stack)和堆(Heap)是存储数据的两个关键区域。它们在内存管理中扮演着非常重要的角色,但各自的用途和特点有所不同。
30 0
|
26天前
|
NoSQL Java 数据库
数据库问题之使用jmap命令获取Java堆信息如何解决
数据库问题之使用jmap命令获取Java堆信息如何解决
19 0
|
29天前
|
存储 Java
JAVA程序运行问题之JVM 中的栈如何解决
JAVA程序运行问题之JVM 中的栈如何解决