国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南郑县| 大同县| 鲜城| 峡江县| 筠连县| 成都市| 兰西县| 巴塘县| 中宁县| 蕲春县| 白朗县| 晴隆县| 罗江县| 桓仁| 伊宁县| 白水县| 上栗县| 石景山区| 凤冈县| 南澳县| 沛县| 西充县| 建平县| 乐平市| 佛冈县| 临城县| 新昌县| 灵寿县| 长宁区| 龙海市| 邵武市| 肃南| 河北区| 上林县| 嘉荫县| 广东省| 会泽县| 乌海市| 尤溪县| 涪陵区| 江川县|