JAVA实现动态调整数组的大小

您所在的位置:网站首页 java能动态分配数组吗 JAVA实现动态调整数组的大小

JAVA实现动态调整数组的大小

2024-07-16 22:31| 来源: 网络整理| 查看: 265

在书中看见基于泛型的动态数组的实现代码,基本思想是通过定义变量N来控制数组的大小,当进行push的时候将N的大小与数组a的大小(a.length)同时改变。

import org.hibernate.loader.custom.Return; import java.util.Iterator; /** * 《算法》第四版 调整数组大小 * * @author 灿夏Summer * @@date 2018-07-12 */ public class ResizingArrayStack implements Iterable { private Item[] a = (Item[]) new Object[1]; private int N = 0; public boolean isEmpty() { return N == 0; } public int size() { return N; } private void resize(int max) { Item[] temp = (Item[]) new Object[max]; for (int i = 0; i < N; i++) { temp[i] = a[i]; a = temp; } } public void push(Item item) { //判断当数组元素计数变量N与数组的长度相等的时候 那么将数组的长度扩充2倍 if (N == a.length) { resize(2 * a.length); } a[N++] = item; } 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(); } 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() { } } }

贴上测试代码

1 测试push

import java.awt.event.ItemEvent; import java.util.Iterator; /** * 动态调整数组大小测试类 * * @author 灿夏Summer * @date 2018-07-12 */ public class ArrayTest { public static void main(String[] args) { ResizingArrayStack item = new ResizingArrayStack(); Integer a ; int max = 10; //测试添加 for (int i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3