欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

動(dòng)態(tài)數(shù)組在java中的實(shí)現(xiàn)

聲明:

創(chuàng)新互聯(lián)專注于珠海網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供珠海營(yíng)銷型網(wǎng)站建設(shè),珠海網(wǎng)站制作、珠海網(wǎng)頁設(shè)計(jì)、珠海網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造珠海網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供珠海網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

data為數(shù)組名。

size為數(shù)組中最后一個(gè)元素的下一個(gè)位置。

實(shí)現(xiàn)動(dòng)態(tài)數(shù)組的原因:

因?yàn)閖ava中的數(shù)組是靜態(tài)的,在new數(shù)組時(shí)就需要指定數(shù)組的大小,如果需要存儲(chǔ)的元素為未知的個(gè)數(shù),設(shè)置空間過大會(huì)造成浪費(fèi),設(shè)置空間過小會(huì)無法存入全部數(shù)據(jù),我們利用自己寫的resize()方法,便可以實(shí)現(xiàn)自動(dòng)擴(kuò)容,不再擔(dān)心數(shù)組容量的問題。

需要自動(dòng)擴(kuò)容或自動(dòng)縮容的時(shí)候一般是數(shù)組滿了或數(shù)組空余空間過多的時(shí)候,多發(fā)生在添加和刪除操作中。

當(dāng)size == data.length的時(shí)候表示數(shù)組已滿,調(diào)用resize(int newCapacity)方法,參數(shù)傳入2*data.length,意為新創(chuàng)建的數(shù)組長(zhǎng)度為原數(shù)組的二倍。

當(dāng)size == data.length /4 并且data.length/2 != 0的時(shí)候,調(diào)用resize方法進(jìn)行縮容。

在ArrayList的自動(dòng)擴(kuò)容方法中參數(shù)默認(rèn)為1.5*capacity。

在resize()方法實(shí)現(xiàn)中new了一個(gè)新的名為newData的數(shù)組用來接收原數(shù)組中的元素。利用for循環(huán)將數(shù)組中的元素進(jìn)行轉(zhuǎn)移。

add方法實(shí)現(xiàn)

//向指定位置添加元素e
	public void add(int index,E e){
		if(index<0||index>size){
			throw new IllegalArgumentException("AddLast failed.Require index error");

		}
		if(size == data.length){
			resize(2*data.length);
		}
		
		for (int i = size-1; i >= index; i--) {
			data[i+1] = data[i];
		}
		data[index] = e;
		size++;
	}

remove方法實(shí)現(xiàn)

//刪除元素,并返回被刪除的元素
	public E remove(int index){
		if(index<0 || index >=size){
			throw new IllegalArgumentException("Remove failed. Index is illegal");
		}
		E ret = data[index];
		for (int i = index+1; i < size; i++) {
			data[i-1] = data[i];
		}
		size--;
		data[size] = null;//loitering objects  != memory leak
		
		if(size == data.length /4 && data.length/2 != 0){
			resize(data.length/2);
		}
		return ret;
	}

resize方法實(shí)現(xiàn)

private void resize(int newCapacity){
		E[] newData = (E[])new Object[newCapacity];
		for (int i = 0; i < size; i++) {
			newData[i] = data[i];
		}
		data = newData;
	}

Array類

package array;
public class Array<E> {
	private E[] data;
	private int size;
	@SuppressWarnings("unchecked")
	public Array(int capacity){
		data = (E[]) new Object[capacity];
		size = 0;
	}
	public Array(){
		this(10);
	}
	public int getSize(){
		return size;
	}
	public int getCapacity(){
		return data.length;
	}
	public boolean isEmpty(){
		return size == 0;
	}
	//向第一個(gè)位置添加一個(gè)元素
	public void addFirst(E e){
		add(0,e);
	}
	//向最后一個(gè)位置添加一個(gè)元素
	public void addLast(E e){
		add(size,e);
	}
	//向指定位置添加元素e
	public void add(int index,E e){
		if(index<0||index>size){
			throw new IllegalArgumentException("AddLast failed.Require index error");
		}
		if(size == data.length){
			resize(2*data.length);
		}
		for (int i = size-1; i >= index; i--) {
			data[i+1] = data[i];
		}
		data[index] = e;
		size++;
	}
	//獲取index位置的元素e
	public E get(int index){
		if(index<0 || index >=size){
			throw new IllegalArgumentException("Get failed. Index is illegal");
		}
		return data[index];
	}
	//修改index索引位置的元素e
	public void set(int index, E e){
		if(index<0 || index >=size){
			throw new IllegalArgumentException("Get failed. Index is illegal");
		}
		data[index] = e;
	}
	//判斷元素是否存在于數(shù)組中
	public boolean contains(E e){
		for (int i = 0; i < size; i++) {
			if(data[i].equals(e)){
				return true;
			}
		}
		return false;
	}
	//找到元素并返回索引
	public int find(E e){
		for (int i = 0; i < size; i++) {
			if(data[i].equals(e)){
				return i;
			}
		}
		return -1;
	}
	//刪除元素,并返回被刪除的元素
	public E remove(int index){
		if(index<0 || index >=size){
			throw new IllegalArgumentException("Remove failed. Index is illegal");
		}
		E ret = data[index];
		for (int i = index+1; i < size; i++) {
			data[i-1] = data[i];
		}
		size--;
		data[size] = null;//loitering objects  != memory leak
		
		if(size == data.length /4 && data.length/2 != 0){
			resize(data.length/2);
		}
		return ret;
	}
	public E removeFirst(){
		return remove(0);
	}
	public E removeLast(){
		return remove(size-1);
	}
	//從數(shù)組中刪除元素e
	public void removeElement(E e){
		int index = find(e);
		if(index != -1){
			remove(index); 
		}
	}
	@Override
	public String toString(){
		StringBuilder res = new StringBuilder();
		res.append(String.format("Array:size = %d ,capacity = %d\n",size,data.length));
		res.append('[');
		for (int i = 0; i < size; i++) {
			res.append(data[i]);
			if(i != size-1){
				res.append(",");
			}
		}
		res.append(']');
		return res.toString();
	}
	private void resize(int newCapacity){
		E[] newData = (E[])new Object[newCapacity];
		for (int i = 0; i < size; i++) {
			newData[i] = data[i];
		}
		data = newData;
	}
}

Main測(cè)試:

package array;

public class Main {
	public static void main(String[] args){
		Array<Integer> arr = new Array<>();
		for (int i = 0; i < 10; i++) {
			arr.addLast(i);
		}
		System.out.println(arr);
		arr.add(1, 100);
		System.out.println(arr);
		arr.addFirst(-1);
		System.out.println(arr);
		arr.set(0, 1);
		System.out.println(arr);
	}
}

以上就是java中動(dòng)態(tài)數(shù)組的具體實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!

本文標(biāo)題:動(dòng)態(tài)數(shù)組在java中的實(shí)現(xiàn)
文章起源:http://aaarwkj.com/article6/ijppog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、、外貿(mào)建站網(wǎng)站營(yíng)銷、全網(wǎng)營(yíng)銷推廣網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
五月婷婷亚洲激情综合网| 丰满人妻被猛烈进入中| 亚洲中文有码一区二区| 亚洲精品一区二区三区三州| 亚洲综合色一区二区三区四区| 激情亚洲综合一区二区| 日本欧美一区二区精品| 免费在线观看福利av| 欧美午夜福利一级高清| 成人黄色一级电影免费看| 精品亚洲在线一区二区| 国产91日韩欧美在线| 和富婆啪啪一区二区免费看| 亚洲少妇精品视频在线| 精品亚洲一区二区三区四| 免费人成黄页网站在线播放国产| 大香蕉国产精品视频在线| 日韩三级av黄片在线| 黄色av手机在线观看| 国产精品推荐在线观看| 日韩欧美一区二区狠狠插| 国产毛片久久久久久国产| 自拍偷拍一区蜜桃视频| 久久久精品人妻免费网站| 国产精品久久久久精品爆| 97在线观看免费公开| 日韩精品专区在线影院重磅| 国产一级av在线播放| 国产日韩手机在线不卡视频| 亚洲成人免费在线播放| 日本区一区二区三视频| 欧美一区二区亚洲天堂| 91精品亚洲内射孕妇| 福利成人午夜国产一区| 国产18成人午夜视频在线观看 | 色哟哟视频在线免费观看| 日本在线观看精品综合| 欧美日韩另类综合91| 97碰碰视频在线观看| 一区二区三区特黄色片| 久久好大好爽要死了欧美|