博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java superArray2
阅读量:7066 次
发布时间:2019-06-28

本文共 3701 字,大约阅读时间需要 12 分钟。

还是那个仿照Vector数组,完善了一些功能,但是输出格式感觉。。。。昂

package com.zmz.work;/** * 长度可变的数组 *  * @author zmz * */public class SuperArray {	/**	 * 容量(容器的大小)	 */	private int capacity;	/**	 * 大小(元素的个数)	 */	private int size = 0;	/**	 * 数据	 */	private double[] data;	/**	 * 容量的增量(步长)默认为0	 */	private int increment = 0;	/**	 * 容量为 8 线性表	 */	public SuperArray() {		this(8);	}	/**	 * 创建指定大小的容器	 * 	 * @param capacity	 *            默认的容量	 */	public SuperArray(int capacity) {		this.capacity = capacity;		data = new double[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(double e) {		// 检查容量与元素的数量		// 设计模式、重构、架构模式设计		increaseCapacity();		data[size++] = e;	}	/**	 * 在指定位置添加信息元素	 * 	 * @param index	 *            新元素的位置(索引、0为起点)	 * @param n	 *            添加的新元素	 */	public boolean add(int index, double e) {		if (index > size) {			return false;		}		size++;		increaseCapacity();		double[] newData4 = new double[capacity];		for(int i = 0; i < index; i++) {			newData4[i] = data[i];		}		newData4[index] = e;		for(int i = index; i < data.length-1; i++) {			newData4[i+1] = data[i];		}		data = newData4;		return true;	}	/**	 * 获得指定位置的元素	 * 	 * @param index	 * @return	 */	public double get(int index) {		// TODO		return data[index];	}	/**	 * 删除特定位置的元素	 * 	 * @param index 位置	 * @return	 */	public double remove(int index) {		// TODO		double[] newData2 = new double[capacity];		double getRemove = data[index];		for(int i = 0; i < index; i++) {			newData2[i] = data[i];		}		for(int i = index; i < data.length-1; i++) {			newData2[i] = data[i+1];		}		data =newData2;		System.out.printf("删除成功,删除的元素位置是%d(下标从0开始),值是%f\n",index,getRemove);		return getRemove;			}		/**	 * 删除从索引位置开始的 n 个元素	 * @param index 位置 	 * 		  n 元素个数	 *  void	 */	void remove(int index,int n) {		double[] newData3 = new double[capacity];		for(int i = 0; i < index-1; i++) {			newData3[i] = data[i];	}		for(int i = index; i < data.length-n; i++) {			newData3[i] = data[i+n];	}		data = newData3;		System.out.println();		System.out.println("删除n个元素成功");	}		/**	 * 扩容	 */	private void increaseCapacity() {		if (size == capacity) {			// 扩容			if (increment == 0) {				capacity *= 2;			} else {				capacity += increment;			}			double[] newData = new double[capacity];			for (int i = 0; i < data.length; i++) {				newData[i] = data[i];			}			data = newData;			System.out.println();			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] + ",");		}		System.out.println();	}}

package com.zmz.work;public class Test {	// alt + /	public static void main(String[] args) {				//test1		SuperArray a1 = new SuperArray();		for(int i = 0; i < 5; i++) {			a1.add(i);					}		a1.show();		a1.add(2, 100.0);		a1.show();				//test2		SuperArray a2 = new SuperArray(10,5);		for (int i = 0; i < 12; i++) {			a2.add(i);			}		a2.remove(5);		a2.show();		a2.remove(1,2);		a2.show();					}}

输出:

容量:8, 大小:50.0,1.0,2.0,3.0,4.0,容量:8, 大小:60.0,1.0,100.0,2.0,3.0,4.0,扩容为:15删除成功,删除的元素位置是5(下标从0开始),值是5.000000容量:15, 大小:120.0,1.0,2.0,3.0,4.0,6.0,7.0,8.0,9.0,10.0,11.0,0.0,删除n个元素成功容量:15, 大小:120.0,3.0,4.0,6.0,7.0,8.0,9.0,10.0,11.0,0.0,0.0,0.0,

转载于:https://www.cnblogs.com/zhangmingzhao/p/7256602.html

你可能感兴趣的文章
CSS 中 calc() 函数用法
查看>>
ahjesus 让我的MVC web API支持JsonP跨域
查看>>
集合的划分(递归)
查看>>
【笔记】读取properties文件
查看>>
Windows环境下安装 mysql-8.0.11-winx64 遇到的问题解决办法
查看>>
CAD 正在重生成模型然后卡住不动
查看>>
@angular/cli项目构建--Dynamic.Form
查看>>
python cookbook学习笔记[一次完成多个字符串的替换]
查看>>
用LyX写中文幻灯片
查看>>
让虚拟机支持USB HDD 启动
查看>>
八数码问题
查看>>
持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本
查看>>
关于malloc的一个未解决的疑问
查看>>
java内存管理机制
查看>>
用R分析时间序列(time series)数据
查看>>
CCF201609-1 最大波动(100分)
查看>>
Vue-devtools 安装浏览器调试
查看>>
postman环境变量的设置
查看>>
百度--买帽子
查看>>
SDWebImage的使用
查看>>