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)栈相关推荐

  1. java中什么是数组_JAVA中关于数组的定义

    前些日子,有网友问:在JAVA中 int[] a 这样定义的数组和 int a[] 定义的数组有什么区别? 当时没有细看,直接回复说,在JAVA中,两者是一样的,没有区别. 回头仔细看时,还是稍有区别 ...

  2. java中的对象数组_Java中对象数组的使用方法详解

    本文实例讲述了java中对象数组的使用方法.分享给大家供大家参考,具体如下: 一 点睛 对象可以用数组来存放,通过下面两个步骤来实现. 1 声明以类为数据类型的数组变量,并用new分配内存空间给数组. ...

  3. Java中创建泛型数组

    Java中创建泛型数组 使用泛型时,我想很多人肯定尝试过如下的代码,去创建一个泛型数组 T[] array = new T[]; 当我们写出这样的代码时编译器会报Cannot create a gen ...

  4. java字符串转字符串数组_Java字符串数组到字符串

    java字符串转字符串数组 Today we will look into how to convert Java String array to String. Sometimes we have ...

  5. java在数组中放入随机数_如何在Java中随机播放数组

    java在数组中放入随机数 There are two ways to shuffle an array in Java. 有两种方法可以在Java中随机播放数组. Collections.shuff ...

  6. java字符串转字符串数组_Java字符串数组

    java字符串转字符串数组 Java String array is used to hold fixed number of Strings. String array is very common ...

  7. java 数组转化为arraylist_在Java中怎样把数组转换为ArrayList?

    本文分析了Stack Overflow上最热门的的一个问题的答案,提问者获得了很多声望点,使得他得到了在Stack Overflow上做很多事情的权限.这跟我没什么关系,我们还是先看看这个问题吧. 这 ...

  8. Java中如何将一个数组分割成多个等长度的数组

    Java中如何将一个数组分割成多个等长度的数组,最后剩下的为一个素组 先看图 分析数据 提取公式 分装代码 1.如下我们需求 最近朋友android项目中有一个需求如下: 这一个长集合[item0, ...

  9. Java 中怎么打印数组?

    分享一道经典Java面试题:   Java 中怎么打印数组? 你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法来打印数组.由于数组没有实现 toSt ...

  10. Java中如何实现数组反转,将数组元素倒过来排列?【含详细解析】

    Java中如何实现数组反转,将数组元素倒过来排列?[含详细解析] 数组元素反转:本来的样子{1,2,3,4,5},反转后{5,4,3,2,1}.要求,不能使用新数组. 分析过程 数组元素反转其实就是对 ...

最新文章

  1. 您也使用托管C++吗?
  2. dSploitzANTI渗透教程之启动zANTI工具
  3. jvm诊断与优化(3)
  4. Vue.js 状态管理
  5. 【car】几款电动代步车参数
  6. java实现截取6个汉字字母数字
  7. python decode unicode encode
  8. [家里蹲大学数学杂志]第405期中国科学院数学与系统科学研究院2015年夏令营分析与代数试题...
  9. 尚硅谷2020最新版SpringCloud(H版alibaba)框架开发教程全套完整版从入门到精通
  10. Python学习---面向对象的学习[深入]
  11. 惠普ns1005w使用说明_惠普 NS1005w 多功能一体机解析:15秒智能闪充 + 全功能手机操控...
  12. 【Angular专题】——(2)【译】Angular中的ForwardRef
  13. 程序猿必须要知道的一个内容:客户端+服务端一(源码解析、建议收藏)
  14. 小秘书的福音——使用Word VBA打造自动排版工具
  15. win10去除右下角激活水印
  16. 11月20日云栖精选夜读:围观阿里总部:边喝茶边搞技术是一种怎样的体验?
  17. PDF如何旋转其中一页?
  18. mysql怎样发给别人_怎么把数据库发给别人
  19. 2021-05-20英文科技论文写作与学术报告Lecture 3习题答案
  20. 计算机专业留学加拿大,留学加拿大计算机专业如何选择院校?

热门文章

  1. 有没有好用的视频压缩软件?分享几个好用的压缩视频软件
  2. Linux RAID磁盘阵列配置
  3. 商品库存清单案例java_JAVA实现简单的商城库存清单
  4. ffmpeg实现flv至mp4格式转换的bat脚本
  5. Android性能优化第(七)篇---StrickMode严苛模式检测耗时与内存问题
  6. 定时器 java qua_Quartz定时任务调度机制解析(CronTirgger、SimpleTrigger )
  7. 即时通讯系统android,基于android系统的即时通讯系统设计与实现
  8. android 找不到手机,找不到 Android 开发者选项,难道我的手机系统没有?| 有轻功 #290...
  9. 【 unity3d 】NGUI playTween与Tween动画 脚本的使用
  10. 35岁的程序员:第17章,悲欢离合