如何使用Arrays.copyOf()对数组扩容,使用数组实现栈
来源:互联网 发布:三国演义武力排行知乎 编辑:程序博客网 时间:2024/06/03 22:26
栈是一种容器,对栈的操作有pop()出栈,就是从栈中取出栈顶元素,push()入栈,将元素压入栈顶,peek(),返回栈顶元素(但是不出栈)
这里使用数组实现,初始时刻,默认栈的大小是2,每次入栈之前先判断元素增加一个之后,栈的容量是否够用,如果不够用就用Arrays.copyOf();进行扩容;
对于Array.copy(E[] e,newLength);
其第一个形参指的是需要扩容的数组,后面是扩容后的大小,其内部实现其实是使用了System.arrayCopy();在内部重新创建一个长度为newLength 类型是E 的数组
并返回该数组的引用;
后面附上测试代码:
package com;import java.util.Arrays;//如何使用数组实现栈class MyStack<E>{ private E[] stack;private int size;public int getSize() {return size;}public void setSize(int size) {this.size = size;}//构造函数public MyStack(){ //初始时候的数组的容量是2 stack = (E[]) new Object[2]; } //判断栈是否为空public boolean isEmpty(){ return size==0;} //返回栈顶元素 但是不出栈 public E peek(){if(size == 0){ return null;}else{ System.out.println("栈顶元素---》"+stack[size-1]); return stack[size-1]; }}//出栈 返回栈顶元素并且将size-1;并且将栈顶元素赋值为nullpublic E pop(){ E value = peek(); if(value!=null) { stack [size-1] =null; size -=1; } System.out.println("正在出栈"+value); return value;}//入栈 并返回入栈的值public E push(E e){ ensureSize(size+1); //先判断 如果增加一个值之后 数组的大小是不是够用; stack [size++] = e; //把新的值放到最后,并且把元素的数量size 加一 ; 表示 System.out.println("正在入栈--》"+e); return e; }//判断容器的大小 如果不够就要扩容 private void ensureSize(int size) { int length = stack.length; //如果元素的数量超过数组的容量,就需要对栈进行扩容 if(size>length) { int newLength = 10+length; stack = Arrays.copyOf(stack, newLength); //这里的数组扩充用Arrays.Copy() 另外一个System.arrayCopy(); System.out.println("正在扩充数组的容量----->"+stack.length); } }}public class Main2{ public static void main(String [] args) { MyStack <String> stack = new MyStack<String>(); System.out.println(stack.peek()); stack.push("hello"); stack.push("你好"); stack.push("我也好"); stack.peek(); stack.pop(); stack.pop(); stack.pop(); stack.pop(); }}
2 0
- 如何使用Arrays.copyOf()对数组扩容,使用数组实现栈
- 【Java】使用 Arrays.copyOf 进行数组复制
- java Arrays数组扩容 Arrays.copyOf(a, a.length+1)
- java使用System.arraycopy对数组扩容
- 关于使用Arrays.copyOf()方法
- System.arraycopy实现数组之间的复制以及Arrays类的copyOf()实现数组复制
- 使用Arrays对数组进行排序(一)
- 使用Arrays对数组进行排序(二)
- 数组是如何实现扩容的
- 数组资源(arrays)的使用
- 数组资源(arrays)的使用
- Java数组的复制Arrays.copyOf()、System.arraycopy()、nums.clone()
- Arrays 类如何使用,数组的复制,数组排序,数组增加删除,变换位置
- 简单实现数组扩容
- pb中对控件如何使用数组
- 不使用数组扩容向数组中插入元素
- 使用数组实现栈
- 使用数组实现栈
- 浅谈路径规划算法之Dijkstra算法
- 常见的Java标注/Java注解和各种符号
- 是否加锁同步备忘
- oracle sql语句定时执行
- php闭包的作用
- 如何使用Arrays.copyOf()对数组扩容,使用数组实现栈
- MySQL数据库存储价格金额使用的数据类型
- AutoCompleteTextView自定义适配器
- mysql 5.5 任意用户不加密码均能登录解决方法
- pci_init_capabilities 中的pci_ea_init初始化
- 某线程池代码分析 <一>
- 像考试时前面的10几道单选题的实现
- Mysql too many connections
- 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析