亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

如下所示:

package com.soto.collection;
 
/**
 * 自己實(shí)現(xiàn)一個(gè)ArrayList,幫助我們更好地理解ArrayList的底層結(jié)構(gòu);
 * @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; //若超過(guò)容量了,那么..數(shù)組擴(kuò)容
		if(size==elementData.length){
			//實(shí)質(zhì):搞個(gè)新數(shù)組
			Object[] newarray = new Object[size*2+1];
			//數(shù)組的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);
		
		 //刪除指定位置對(duì)象,刪除某位置,相當(dāng)于 將后往前挪:
		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)){ //注意底層調(diào)用的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(); //擴(kuò)容
		System.arraycopy(elementData, index, elementData, index + 1,
    size - index);
		elementData[index] = obj;
		size++;
		
	}
	private void ensureCapacity(){
		//擴(kuò)容
				if(size==elementData.length){
					//實(shí)質(zhì):搞個(gè)新數(shù)組
					Object[] newarray = new Object[size*2+1];
					//數(shù)組的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的底層實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

    Java通過(guò)切面實(shí)現(xiàn)統(tǒng)一處理Token設(shè)置用戶(hù)信息

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

    手把手寫(xiě)Spring框架

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

    java實(shí)現(xiàn)馬踏棋盤(pán)游戲

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

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

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

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

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

    在java poi導(dǎo)入Excel通用工具類(lèi)示例詳解

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

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

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

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

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

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

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

最新評(píng)論