java中lifo的数组_Java 实现下压(LIFO)栈
package com.ziqin.stack;
import java.util.Iterator;
/**
* @author Leiziqin
* @since 2017/11/25
*/
public class ResizingArrayStack implements Iterable {
/**
* 元素数组
*/
@SuppressWarnings("unchecked")
private Item[] a = (Item[]) new Object[1];
/**
* 元素数量
*/
private int n = 0;
/**
* 栈是否为空
*
* @return 栈是否为空
*/
public boolean isEmpty() {
return n == 0;
}
/**
* 栈的大小
*
* @return 栈大小
*/
public int size() {
return n;
}
/**
* 将栈移动到一个大小为max的新数组
*
* @param max 新数组大小
*/
@SuppressWarnings("unchecked")
private void resize(int max) {
Item[] temp = (Item[]) new Object[max];
for (int i = 0; i < n; i++) {
temp[i] = a[i];
}
a = temp;
}
/**
* 将元素添加到栈顶
*
* @param item 元素
*/
public void push(Item item) {
if (n == a.length) {
resize(2 * a.length);
}
a[n++] = item;
}
/**
* 从栈顶删除元素
*
* @return 栈顶元素
*/
public Item pop() {
Item item = a[--n];
a[n] = null;
if (n > 0 && n == a.length / 4) {
resize(a.length / 2);
}
return item;
}
@Override
public Iterator iterator() {
return new ReverseArrayIterator();
}
/**
* 为了支持foreach
*/
private class ReverseArrayIterator implements Iterator {
private int i = n;
@Override
public boolean hasNext() {
return i > 0;
}
@Override
public Item next() {
return a[--i];
}
@Override
public void remove() {
}
}
public static void main(String[] args) {
ResizingArrayStack stack = new ResizingArrayStack<>();
stack.push("Hello");
stack.push("World");
stack.push("Java");
for (String s : stack) {
System.out.println(s);
}
String pop = stack.pop();
System.out.println(pop);
stack.forEach(System.out::println);
}
}
java中lifo的数组_Java 实现下压(LIFO)栈相关推荐
- java中什么是数组_JAVA中关于数组的定义
前些日子,有网友问:在JAVA中 int[] a 这样定义的数组和 int a[] 定义的数组有什么区别? 当时没有细看,直接回复说,在JAVA中,两者是一样的,没有区别. 回头仔细看时,还是稍有区别 ...
- java中的对象数组_Java中对象数组的使用方法详解
本文实例讲述了java中对象数组的使用方法.分享给大家供大家参考,具体如下: 一 点睛 对象可以用数组来存放,通过下面两个步骤来实现. 1 声明以类为数据类型的数组变量,并用new分配内存空间给数组. ...
- Java中创建泛型数组
Java中创建泛型数组 使用泛型时,我想很多人肯定尝试过如下的代码,去创建一个泛型数组 T[] array = new T[]; 当我们写出这样的代码时编译器会报Cannot create a gen ...
- java字符串转字符串数组_Java字符串数组到字符串
java字符串转字符串数组 Today we will look into how to convert Java String array to String. Sometimes we have ...
- java在数组中放入随机数_如何在Java中随机播放数组
java在数组中放入随机数 There are two ways to shuffle an array in Java. 有两种方法可以在Java中随机播放数组. Collections.shuff ...
- java字符串转字符串数组_Java字符串数组
java字符串转字符串数组 Java String array is used to hold fixed number of Strings. String array is very common ...
- java 数组转化为arraylist_在Java中怎样把数组转换为ArrayList?
本文分析了Stack Overflow上最热门的的一个问题的答案,提问者获得了很多声望点,使得他得到了在Stack Overflow上做很多事情的权限.这跟我没什么关系,我们还是先看看这个问题吧. 这 ...
- Java中如何将一个数组分割成多个等长度的数组
Java中如何将一个数组分割成多个等长度的数组,最后剩下的为一个素组 先看图 分析数据 提取公式 分装代码 1.如下我们需求 最近朋友android项目中有一个需求如下: 这一个长集合[item0, ...
- Java 中怎么打印数组?
分享一道经典Java面试题: Java 中怎么打印数组? 你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法来打印数组.由于数组没有实现 toSt ...
- Java中如何实现数组反转,将数组元素倒过来排列?【含详细解析】
Java中如何实现数组反转,将数组元素倒过来排列?[含详细解析] 数组元素反转:本来的样子{1,2,3,4,5},反转后{5,4,3,2,1}.要求,不能使用新数组. 分析过程 数组元素反转其实就是对 ...
最新文章
- 您也使用托管C++吗?
- dSploitzANTI渗透教程之启动zANTI工具
- jvm诊断与优化(3)
- Vue.js 状态管理
- 【car】几款电动代步车参数
- java实现截取6个汉字字母数字
- python decode unicode encode
- [家里蹲大学数学杂志]第405期中国科学院数学与系统科学研究院2015年夏令营分析与代数试题...
- 尚硅谷2020最新版SpringCloud(H版alibaba)框架开发教程全套完整版从入门到精通
- Python学习---面向对象的学习[深入]
- 惠普ns1005w使用说明_惠普 NS1005w 多功能一体机解析:15秒智能闪充 + 全功能手机操控...
- 【Angular专题】——(2)【译】Angular中的ForwardRef
- 程序猿必须要知道的一个内容:客户端+服务端一(源码解析、建议收藏)
- 小秘书的福音——使用Word VBA打造自动排版工具
- win10去除右下角激活水印
- 11月20日云栖精选夜读:围观阿里总部:边喝茶边搞技术是一种怎样的体验?
- PDF如何旋转其中一页?
- mysql怎样发给别人_怎么把数据库发给别人
- 2021-05-20英文科技论文写作与学术报告Lecture 3习题答案
- 计算机专业留学加拿大,留学加拿大计算机专业如何选择院校?
热门文章
- 有没有好用的视频压缩软件?分享几个好用的压缩视频软件
- Linux RAID磁盘阵列配置
- 商品库存清单案例java_JAVA实现简单的商城库存清单
- ffmpeg实现flv至mp4格式转换的bat脚本
- Android性能优化第(七)篇---StrickMode严苛模式检测耗时与内存问题
- 定时器 java qua_Quartz定时任务调度机制解析(CronTirgger、SimpleTrigger )
- 即时通讯系统android,基于android系统的即时通讯系统设计与实现
- android 找不到手机,找不到 Android 开发者选项,难道我的手机系统没有?| 有轻功 #290...
- 【 unity3d 】NGUI playTween与Tween动画 脚本的使用
- 35岁的程序员:第17章,悲欢离合