- 浏览: 345082 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (169)
- spring (20)
- java (44)
- ibatis (0)
- hibernate (6)
- struts (2)
- javascript (6)
- ajax (1)
- eclipse (4)
- 其他 (10)
- database (17)
- ibatis 分页 (7)
- xml (2)
- pl/sql (6)
- sql (4)
- apache (3)
- oracle (8)
- jdom (1)
- Open ModelSphere (1)
- 线程 (2)
- 多线程 (2)
- 查找文件 (1)
- Comparator (2)
- jxl (2)
- jquery (1)
- Flex (2)
- 非技术 (1)
- mysql (2)
- zxing (1)
- jdbc (1)
- Java内存 (1)
- editplus (1)
- log4j (1)
- sqlserver (2)
- base64 (1)
- Linux (4)
- Shell (2)
- 非技术共享 (1)
- 省市 (1)
- PowerDesigner (3)
- 观察者模式 (2)
- Servlet (1)
- 单点登录 (1)
- IO (1)
- tomcat (1)
- clob (1)
- html (1)
- jsp (2)
- JNative (1)
- WebService (2)
- Highcharts (1)
- Spring Security (1)
- ztree (1)
- Mongodb (3)
- sftp (1)
- SVN (1)
- openSUSE (1)
- Ubuntu (1)
- nio (1)
- springboot (1)
- java8 (1)
最新评论
-
wajjj:
[flash=200,200][url][img][list] ...
【JAVA】读取excel内容(兼容03和07格式) -
xurichusheng:
jjhe369 写道感谢分享!但是发现一个小问题,就是第13, ...
oracle 存储过程分页查询 -
jjhe369:
感谢分享!但是发现一个小问题,就是第13,14行的V_STAR ...
oracle 存储过程分页查询 -
飞天奔月:
为什么不用 Map<String, String> ...
读取.properties的内容,并将内容放入一个Map中 -
xurichusheng:
814687491 写道测试了一下,无法换行!你可以自定义自己 ...
使用google的zxing制作二维码
栈
import java.util.Arrays; /** * * <栈> * <后进先出> * @author * @version [版本号, 2011-9-19] * @see [相关类/方法] * @since [产品/模块版本] */ public class SequenceStack<T>{ private int DEFAULT_INIT_SIZE = 10; //保存数组的长度 private int capacity; //定义当底层容量不够时,程序每次增加的数组长度 private int capacityIncrement = 0; //定义一个数组,用于保存顺序栈的元素 private Object[] elementData; //保存顺序栈中元素的当前个数 private int size = 0; /** * <以默认数组长度创建空顺序栈> */ public SequenceStack(){ capacity = DEFAULT_INIT_SIZE; elementData = new Object[capacity]; } /** * <以一个初始化元素来创建顺序栈> * @param element 指定顺序栈中第一个元素 */ public SequenceStack(T element){ this(); elementData[0] = element; size++; } /** * <以指定长度的数组来创建顺序栈> * @param element 指定顺序栈中第一个元素 * @param initSize 指定顺序栈底层数组的长度 */ public SequenceStack(T element, int initSize){ this.capacity = initSize; elementData = new Object[capacity]; elementData[0] = element; size++; } /** * <以指定长度的数组来创建顺序栈> * @param element 指定顺序栈中第一个元素 * @param initSize 指定顺序栈底层数组的长度 * @param capacityIncrement 定义当底层容量不够时,程序每次增加的数组长度 */ public SequenceStack(T element, int initSize, int capacityIncrement){ this.capacity = initSize; this.capacityIncrement = capacityIncrement; elementData = new Object[capacity]; elementData[0] = element; size++; } /** * <获取顺序栈的大小> * @return [参数说明] * * @return int [返回类型说明] * @exception throws [违例类型] [违例说明] * @see [类、类#方法、类#成员] * @author * @date 2011-9-19 */ public int length(){ return size; } /** * <入栈> * @param element [参数说明] * * @return void [返回类型说明] * @exception throws [违例类型] [违例说明] * @see [类、类#方法、类#成员] * @author * @date 2011-9-19 */ public void push(T element){ //栈长度+1 ensureCapacity(size+1); //将要添加的元素放在栈顶 elementData[size++] = element; } /** * <出栈> * * @return void [返回类型说明] * @exception throws [违例类型] [违例说明] * @see [类、类#方法、类#成员] * @author * @date 2011-9-19 */ @SuppressWarnings("unchecked") public synchronized T pop(){ if (isEmpty()){ throw new IndexOutOfBoundsException("栈为空"); } //获取栈顶元素 T topValue = (T)elementData[size-1]; //释放栈顶元素 elementData[--size] = null; return topValue; } /** * <获取栈顶元素> * @return [参数说明] * * @return T [返回类型说明] * @exception throws [违例类型] [违例说明] * @see [类、类#方法、类#成员] * @author * @date 2011-9-19 */ @SuppressWarnings("unchecked") public synchronized T peek(){ if (isEmpty()){ return null; } return (T)elementData[size-1]; } /** * <判断栈是否为空> * @return [参数说明] * * @return boolean [返回类型说明] * @exception throws [违例类型] [违例说明] * @see [类、类#方法、类#成员] * @author * @date 2011-9-19 */ public boolean isEmpty(){ return size == 0; } /** * <清空栈> * * @return void [返回类型说明] * @exception throws [违例类型] [违例说明] * @see [类、类#方法、类#成员] * @author * @date 2011-9-19 */ public void clear(){ //将数组中的所有元素赋为null Arrays.fill(elementData, null); size = 0; } /** * <扩容> * @param minCapacity [参数说明] * * @return void [返回类型说明] * @exception throws [违例类型] [违例说明] * @see [类、类#方法、类#成员] * @author * @date 2011-9-19 */ public void ensureCapacity(int minCapacity){ //如果数组的原有长度小于目前所需的长度 if (minCapacity > capacity){ if (capacityIncrement > 0){ while (capacity < minCapacity){ /* * 不断地将capacity长度加capacityIncrement, * 直到capacity大于minCapacity */ capacity += capacityIncrement; } }else{ while (capacity < minCapacity){ /* * 不断地将capacity*2, * 直到capacity大于minCapacity */ capacity <<= 1; } } elementData = Arrays.copyOf(elementData, capacity); } } public String toString(){ if (isEmpty()){ return "[]"; } StringBuilder sb = new StringBuilder("["); for (int i=size-1; i>-1; i--){ sb.append(elementData[i].toString()+", "); } int len = sb.length(); return sb.delete(len-2, len).append("]").toString(); } }
测试:
public class Test { /** <一句话功能简述> * <功能详细描述> * @param args [参数说明] * * @return void [返回类型说明] * @exception throws [违例类型] [违例说明] * @see [类、类#方法、类#成员] * @author * @date 2011-9-19 */ public static void main(String[] args) { SequenceStack<String> stack = new SequenceStack<String>(); System.out.println("is empty:"+stack.isEmpty()); stack.push("aaaa"); stack.push("bbbb"); stack.push("cccc"); stack.push("dddd"); System.out.println("is empty:"+stack.isEmpty()); System.out.println(stack); //访问栈顶元素 System.out.println("栈顶元素:"+stack.peek()); //弹出一个元素 System.out.println("第一次弹出栈顶元素:"+stack.pop()); //再次弹出一个元素 System.out.println("第二次弹出栈顶元素:"+stack.pop()); System.out.println("两次pop之后的栈:"+stack); } }
发表评论
-
mysql树
2019-09-26 08:39 413mysql树 -
【JAVA】组织树
2019-09-04 10:17 1047JDK 版本:jdk 1.8 及以上。 1. ... -
多线程多批量插入大数据
2018-10-31 11:19 6407参考 https://blog.csdn.ne ... -
java 7 nio逐行读取文件内容
2015-12-26 23:33 5458nio逐行读取文件内容,使用 java 7. 首先,获取 ... -
java 6 IO读取txt文件内容
2015-12-26 23:24 876逐行读取。 首先获取文件的编码格式; 读取文件内容。 ... -
【JAVA】读取excel内容(兼容03和07格式)
2015-12-21 13:51 2181jar 包: poi-3.13.j ... -
一行代码去除List中的重复数据
2015-12-02 10:52 16711. 核心代码: List<String> ... -
将List中的对象中的字段的重复值删除
2015-12-01 11:10 2704如下面的对象 Subs,如果其属性 startSt 和 e ... -
jdk 官方下载地址
2015-11-06 10:00 1861http://www.oracle.com/techn ... -
jsp页面显示二进制图片
2014-11-05 15:58 40801. DAO层 import java.sql.C ... -
java中使用JNative调用dll方法
2014-03-03 16:02 5330使用JNative调用dll方法, dll 文件名 ... -
Vector排序
2013-05-08 10:17 15351. Vector 默认按元素的添加顺序排序 im ... -
使用观察者模式监听Map值的改变
2013-05-02 16:46 6197观察者(Observer)角色:为所有的具体观察者定 ... -
【转】一个比较快的Base64 编码/解码 算法
2013-03-28 17:50 1725转自: 中国开源社区 最快的 Base64 编码/解 ... -
jdbc 数据库连接池
2012-12-04 16:09 1513注:有些java类是JDK ... -
将查询结果导入excel 中
2012-06-29 11:14 12101. 数据库:oracle 10g2 JDK: ... -
使用Comparator做对象的排序
2012-06-15 18:15 1334之前在面试的时候,人家老是问怎么对对象进行排序。 虽然 ... -
【转】 模拟银行业务调度系统
2012-06-13 15:39 1204转自:CSDN,itm_hadf ... -
HttpClient 代理实例(Get方式) 线程
2012-01-10 14:23 1550使用的jar包: commons-codec-1.4.jar ... -
httpclient资料(自用)
2012-01-10 07:07 1077httpclient资料
相关推荐
Java栈是一种基于后进先出(LIFO)原则的数据结构,它在计算机科学和编程中具有广泛的应用。本文将深入探讨Java中栈的实现以及其在实际应用中的使用。 首先,我们来理解栈的基本概念。栈是一种特殊类型的线性数据...
关于Java栈与堆的深入解析 Java作为一种广泛使用的编程语言,其内存管理机制是学习者必须掌握的核心概念之一。在Java中,栈(Stack)与堆(Heap)是用于存储数据的主要区域,它们各自承担着不同的职责,对于理解...
java数字栈和符号栈模拟计算器(中缀表达式) “计算中缀表达式”可以称得上是一个特别经典的关于栈的算法题,几乎在所有数据结构教材中都会涉及,而且很多公司面试或者笔试的时候都会把这道题作为一个考察点。可以说...
Java栈是Java虚拟机(JVM)内存模型的重要组成部分,主要负责存储方法调用过程中的局部变量、操作数和方法返回信息。栈的特点是后进先出(LIFO),每个线程都有自己的独立Java栈,确保了线程安全的数据存储。 1. **...
在Java编程语言中,栈(Stack)和队列(Queue)是两种基本的数据结构,它们在处理数据存储和操作方面有着广泛的应用。本教程将通过一些小例子来深入理解这两种数据结构及其在Java中的实现。 栈是一种后进先出(LIFO...
Java栈与堆的存储机制解析 Java栈和堆是Java语言中两个最基本的存储机制,它们都是Java用来在RAM中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 1. 栈的存储机制: 栈的优势是...
通过Java面向对象思想和类的封装性完成栈的类设计,选择合适的底层存储结构,完成栈的判空isEmpty()、进栈push()、出栈pop()、取栈顶元素peek(),栈存储的对象以泛型给出。并和Java中的Stack的类以及功能进行比较...
java栈实验代码
每个方法调用都会在Java栈上创建一个栈帧,包含方法的局部变量、操作数、返回地址等信息。Java栈的管理是解释器的重要职责,包括栈帧的分配、数据的压栈和出栈操作。 【异常处理】 异常处理机制是Java卡虚拟机不可...
JVM Java栈桢的创建 Java虚拟机(JVM)是Java语言的运行环境,它负责将Java字节码转换为机器码并执行。在JVM中,栈桢的创建是Java程序执行的基础。本文将对JVM Java栈桢的创建进行详细的分析。 一、栈桢的概念 在...
栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
在IT领域,迷宫求解是一个经典的问题,而在这个场景中,我们看到的是一个使用Java编程语言实现的迷宫求解算法,它基于栈数据结构。这个名为"Migong.rar"的压缩包包含了一个名为"MiGong"的程序,以及一个可能是链接或...
JAVA栈类程序代码,包括进栈,出栈,以及栈空栈满的判定,希望能帮助到大家。
关于栈的使用,内有关于使用的示例 栈的应用举例 1. 将10进制正整数num转换为n进制 private String conversion(int num, int n) { MyStack<Integer> myStack = new MyArrayStack(); Integer result = num; ...
栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过...
在Java编程中,栈是一种非常重要的数据结构,它遵循“后进先出”(LIFO)的原则。本项目是利用栈来实现一个简单的计算器,不支持括号表达式的计算,其用户界面是通过Java Swing库构建的。下面将详细介绍这个计算器的...
本文将详细阐述Java和C++中栈与堆的区别以及Java在这方面的优势。 首先,我们来理解栈内存。栈内存主要负责存储程序运行过程中的局部变量,包括基本类型变量(如int、char)和对象的引用变量。在Java中,当函数执行...
### Java中堆内存与栈内存分配浅析 #### 一、引言 在Java编程语言中,内存管理是一项至关重要的技术。程序运行时所使用的内存主要分为两类:堆内存(Heap Memory)和栈内存(Stack Memory)。理解这两种内存类型的...