仿照JAVA vector模型写一个SuperArray
来源:互联网 发布:怎么能开淘宝店铺 编辑:程序博客网 时间:2024/06/10 10:02
SuperArray功能,存储int型的数值,如果超过,则默认以当前空间二倍扩展,如果传入了增长参数,则增加传入的参数数值容量。
SuperArray.java:
package com.zmz.work;/** * 长度可变的数组(ctrl + s + f) * * @author zmz * */public class SuperArray {/** * 容量(容器的大小) */private int capacity;/** * 大小(元素的个数) */private int size = 0;/** * 数据 */private int[] data;/** * 容量的增量(步长)默认为0 */private int increment = 0;/** * 容量为 10 线性表 */public SuperArray() {this(10);}/** * 创建指定大小的容器 * * @param capacity * 默认的容量 */public SuperArray(int capacity) {this.capacity = capacity;data = new int[capacity];}// 构造器模式// public SuperArray(int increment) {//// }/** * 创建变长数组 * * @param capacity * 容量 * @param increment * 扩容的增长因子 */public SuperArray(int capacity, int increment) {this(capacity);this.increment = increment;}/** * 获得容器的大小(存储的元素的个数) * * @return int 小于等于容量 */public int getSize() {return size;}/** * 获得容器的容量 * * @return int 容器的容量 */public int getCapacity() {return capacity;}/** * 往容器中(末尾)添加一个元素 * * @param n * int 要存入容器的元素 */public void add(int n) {// 检查容量与元素的数量// 设计模式、重构、架构模式设计increaseCapacity();data[size++] = n;}/** * 在指定位置添加信息元素 * * @param index * 新元素的位置(索引、0为起点) * @param n * 添加的新元素 */public boolean add(int index, int n) {if (index > size) {return false;}data[index] = n;return true;}/** * 获得指定位置的元素 * * @param index * @return */public int get(int index) {// TODOreturn data[index];}/** * 删除特定位置的元素 * * @param index 位置 * @return */public int remove(int index) {// TODOreturn 0;}/** * 扩容 */private void increaseCapacity() {if (size == capacity) {// 扩容if (increment == 0) {capacity *= 2;} else {capacity += increment;}int[] newData = new int[capacity];for (int i = 0; i < data.length; i++) {newData[i] = data[i];}data = newData;System.out.println("扩容为:" + capacity);}}public void show() {System.out.printf("\n容量:%d, 大小:%d\n", capacity, size);for (int i = 0; i < size; i++) {System.out.print(data[i] + ",");}}}
Test.java:
package com.zmz.work;public class Test {// alt + /public static void main(String[] args) {SuperArray a1 = new SuperArray(15);SuperArray a2 = new SuperArray(17);SuperArray a3 = new SuperArray(10);SuperArray a4 = new SuperArray(10,3);for (int i = 0; i < 15; i++) {a1.add(i);a2.add(i);a3.add(i);a4.add(i);}a1.show();a2.show();a3.show();a4.show();}}
输出:
扩容为:20
扩容为:13
扩容为:16
容量:15, 大小:15
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
容量:17, 大小:15
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
容量:20, 大小:15
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
容量:16, 大小:15
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
扩容为:13
扩容为:16
容量:15, 大小:15
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
容量:17, 大小:15
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
容量:20, 大小:15
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
容量:16, 大小:15
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
阅读全文
0 0
- 仿照JAVA vector模型写一个SuperArray
- 仿照Flappy bird写的一个Java小程序
- 仿照Iterator写的一个迭代器
- 一个用java仿照魔塔写的小游戏
- 【Java】NIO 仿照zookeeper 写的 nio客户端
- javaoo--superArray
- 写了一个Java的简单缓存模型
- 6、用vb6写一个仿照SPY++的东西,供大家参考学习用
- 用Unity做的一个小游戏,仿照一个例子写的,个人觉得文章写的不错,哈哈
- 自己动手写一个C++ STL vector
- 用c语言写 成一个vector
- 写一个虚拟机的模型
- 仿照kfifo编写一个ring_buffer
- smarty学习基础篇----仿照samrty模版写一个自己的简单smarty模版 帮助自己理解smarty
- 仿照SDK编程写的窗口
- 仿照SDK编程写的窗口
- 仿照redis写的nginx开机画面
- 无聊瞎写的一段,仿照Rails。
- Java8 实战学习 — Lambda 表达式
- redhat5.5 安装 glibc2.18 步骤及问题小结
- js中substring()与substr()方法的区别
- Hibernate(五):Hibernate映射——一对一单向关联映射
- 欢迎使用CSDN-markdown编辑器
- 仿照JAVA vector模型写一个SuperArray
- 1115: 数字统计
- C++作业6
- Mysql create table failure: ERROR 1005 (HY000): Can't create table 'lams.attendance1' (errno: 121)
- Generate Parentheses
- eclipse安装svn插件
- CDN 技术详解--读书笔记-完
- quadratic equation
- fedora 安装eclipse和pydev以及wxpython