欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java ArrayList的底層實現(xiàn)方法

 更新時間:2018年10月13日 08:58:08   作者:王小濤_同學  
今天小編就為大家分享一篇Java ArrayList的底層實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

如下所示:

package com.soto.collection;
 
/**
 * 自己實現(xiàn)一個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的底層實現(xiàn)方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java實現(xiàn)inputstream流的復制代碼實例

    Java實現(xiàn)inputstream流的復制代碼實例

    這篇文章主要介紹了Java實現(xiàn)inputstream流的復制代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Java通過切面實現(xiàn)統(tǒng)一處理Token設置用戶信息

    Java通過切面實現(xiàn)統(tǒng)一處理Token設置用戶信息

    這篇文章主要介紹了Java切面統(tǒng)一處理Token設置用戶信息,常見的后端開發(fā)中,接口請求中一般前端都是先通過用戶登錄獲取token,每次接口請求都需要在頭信息中攜帶token信息,后端每次都需要手動處理token信息,從token信息中解析獲取用戶信息,需要的朋友可以參考下
    2023-10-10
  • 手把手寫Spring框架

    手把手寫Spring框架

    Spring是于2003 年興起的一個輕量級的Java 開發(fā)框架,由Rod Johnson創(chuàng)建。簡單來說,Spring是一個分層的JavaSE/EE full-stack(一站式) 輕量級開源框架
    2021-08-08
  • java實現(xiàn)馬踏棋盤游戲

    java實現(xiàn)馬踏棋盤游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)馬踏棋盤游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python 與HFSS聯(lián)合仿真的教程講解

    python 與HFSS聯(lián)合仿真的教程講解

    這篇文章主要介紹了python 與HFSS聯(lián)合仿真的教程講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 透過Spring源碼查看Bean的命名轉換規(guī)則圖文詳解

    透過Spring源碼查看Bean的命名轉換規(guī)則圖文詳解

    Java Bean是一種 Java 編程語言編寫的可重用軟件組件,包括符合一定規(guī)范的Java 類、屬性和方法,用于描述和處理應用程序中的數據對象,下面這篇文章主要給大家介紹了關于透過Spring源碼查看Bean的命名轉換規(guī)則的相關資料,需要的朋友可以參考下
    2023-06-06
  • 在java poi導入Excel通用工具類示例詳解

    在java poi導入Excel通用工具類示例詳解

    這篇文章主要給大家介紹了關于在java poi導入Excel通用工具類的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • SpringBoot2.0集成MQTT消息推送功能實現(xiàn)

    SpringBoot2.0集成MQTT消息推送功能實現(xiàn)

    這篇文章主要介紹了SpringBoot2.0集成MQTT消息推送功能實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Java?Mybatis?foreach嵌套foreach?List<list<Object>>問題

    Java?Mybatis?foreach嵌套foreach?List<list<Object>&

    在MyBatis的mapper.xml文件中,foreach元素常用于動態(tài)生成SQL查詢條件,此元素包括item(必選,元素別名)、index(可選,元素序號或鍵)、collection(必選,指定迭代對象)、open、separator、close(均為可選,用于定義SQL結構)
    2024-09-09
  • Spring中多配置文件及引用其他bean的方式

    Spring中多配置文件及引用其他bean的方式

    本文給大家介紹spring中多配置文件及引用其他bean的方式,涉及到spring配置文件的相關知識,感興趣的朋友一起學習吧
    2016-03-03

最新評論