国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

Java ArrayList的底層實現方法

2024-07-14 08:42:32
字體:
來源:轉載
供稿:網友

如下所示:

package com.soto.collection; /** * 自己實現一個ArrayList,幫助我們更好地理解ArrayList的底層結構; * @author 王 * */public class SxtArrayList {	private Object[] elementData;	private int size;	public int size(){		return size;	}	public boolean isEmpty(){		return size == 0;	}			public SxtArrayList(){		this(10);	}	public SxtArrayList(int initialCapacity){		if(initialCapacity<0){			try {				throw new Exception();			} catch (Exception e) {				e.printStackTrace();			}		}		elementData = new Object[initialCapacity]; //初始化 容量為10 						}	public void add(Object obj){		elementData[size++] = obj; //若超過容量了,那么..數組擴容		if(size==elementData.length){			//實質:搞個新數組			Object[] newarray = new Object[size*2+1];			//數組的copy:			System.arraycopy(elementData, 0, newarray, 0, elementData.length);			elementData = newarray;					}			}	public Object get(int index){		rangeCheck(index);		return elementData[index];	}	public void remove(int index){ 		rangeCheck(index);				 //刪除指定位置對象,刪除某位置,相當于 將后往前挪:		int numMoved = size-index-1;		if(numMoved>0){			System.arraycopy(elementData, index+1, elementData, index, numMoved);		}	}	public void remove(Object obj){		for(int i=0;i<size;i++){			if(get(i).equals(obj)){ //注意底層調用的equals方法而不是==。				remove(i);			}		}	}				private void rangeCheck(int index){		if(index<0||index>size){			try {				throw new Exception();			} catch (Exception e) {				e.printStackTrace();			}		}					}	public Object set(int index, Object obj){		rangeCheck(index);  Object oldValue = elementData[index];  elementData[index] = obj;  return oldValue;		}	public void add(int index, Object obj){		rangeCheck(index);		ensureCapacity(); //擴容		System.arraycopy(elementData, index, elementData, index + 1,    size - index);		elementData[index] = obj;		size++;			}	private void ensureCapacity(){		//擴容				if(size==elementData.length){					//實質:搞個新數組					Object[] newarray = new Object[size*2+1];					//數組的copy:					System.arraycopy(elementData, 0, newarray, 0, elementData.length);					elementData = newarray;					}	}		public static void main(String[] args) {		SxtArrayList list = new SxtArrayList(3);		list.add("222");		list.add("333");		list.add("444");		list.add("555");		list.add("666");		list.add("777");		System.out.println(list.size());		System.out.println(list.get(6));	}	 }

以上這篇Java ArrayList的底層實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日照市| 光泽县| 铜陵市| 白水县| 兴义市| 开鲁县| 通州市| 宣城市| 孝感市| 富宁县| 定兴县| 大石桥市| 滁州市| 柳林县| 南京市| 藁城市| 和田市| 织金县| 山东省| 巴林右旗| 玉山县| 米泉市| 信丰县| 祥云县| 全椒县| 台江县| 芦山县| 图片| 留坝县| 绥宁县| 长武县| 英吉沙县| 龙口市| 龙井市| 兴城市| 木里| 望江县| 西峡县| 新源县| 梨树县| 胶南市|