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

Java超詳細(xì)講解ArrayList與順序表的用法

 更新時間:2022年06月20日 11:13:30   作者:盛夏洋光  
ArrayList 類是一個可以動態(tài)修改的數(shù)組,與普通數(shù)組的區(qū)別就是它是沒有固定大小的限制,我們可以添加或刪除元素。ArrayList 繼承了 AbstractList ,并實現(xiàn)了 List 接口,順序表是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關(guān)系由它們的存儲順序自然表示

簡要介紹

順序表是一段物理地址連續(xù)的儲存空間,一般情況下用數(shù)組儲存,并在數(shù)組上完成增刪查改。而在java中我們有ArrayList這個容器類封裝了順序表的方法。

在集合框架中,ArrayList是一個普通的類,其實現(xiàn)了list接口。其源碼類定義如圖

可見,其實現(xiàn)了RandomAccess, Cloneable, 以及Serializable接口,分別代表了其支持隨機訪問,clone,以及序列化。

Arraylist容器類的使用

Arraylist容器類的構(gòu)造

 public static void main(String[] args) {
        //無參數(shù)的構(gòu)造方法
        List<Integer> list1 = new ArrayList<>();
        //指定初始容量的構(gòu)造方法
        List<Integer> list2 = new ArrayList<>();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        //使用其他collection進行初始化(此處是ArrayList)
        List<Integer> list3 = new ArrayList<>(list1);

ArrayList的常見方法

方法解釋
boolean add(E e)尾插e
void add(int index, E element)將 e 插入到 index 位置
boolean addAll(Collection<? extends E> c)將集合 c 中的元素 尾插到該集合中
E remove(int index)刪除 index 位置元素并返回
boolean remove(Object o)刪除遇到的第一個 o
E get(int index)獲取下標(biāo) index 位置元素
E set(int index, E element)將下標(biāo) index 位置元素設(shè)置為 element
void clear()清空順序表
boolean contains(Object o)判斷 o 是否在線性表中
int indexOf(Object o)返回第一個 o 所在下標(biāo)
int lastIndexOf(Object o)返回最后一個 o 的下標(biāo)
List< E > subList(int fromIndex, int toIndex)截取部分 list
List<String> list = new ArrayList<>();
        list.add("盛夏");// 尾插元素 “盛夏”
        list.add(1,"洋光");//在1下標(biāo)處插入元素 “洋光”
        list.addAll(list);//將list中的元素全部尾插
        list.remove(0);//刪除0下標(biāo)處的元素
        boolean flg = list.remove("盛夏");//刪除遇到的第一個元素“盛夏”,刪除成功flg為true,刪除失敗flg為false;
        String s = list.get(0);//獲取0下標(biāo)處的元素
        list.set(0,"盛夏");//將0下標(biāo)元素設(shè)為 “盛夏”
        boolean flg1 = list.contains("盛夏");//查詢“盛夏”是否在順序表內(nèi),存在flg1為true,不存在flg1為false;
        list.indexOf("盛夏");//返回第一個 "盛夏" 所在下標(biāo)
        list.lastIndexOf("盛夏");// 返回最后一個 "盛夏" 的下標(biāo)
        //截取list的[0,1)為subList,注意區(qū)間左閉右開
        List<String> subList = list.subList(0,1);

注:此處的subList方法只是截取了原list中被截取部分的地址,所以若改變subList元素,原list中元素也會改變。

ArrayList的遍歷

循環(huán)遍歷

for-each遍歷

//循環(huán)遍歷
        for(int i = 0; i<list.size();i++){
            System.out.print(list.get(i)+" ");
        }
        //for-each 遍歷
        for(String i:list){
            System.out.print(i+" ");
        }

ArrayList中的擴容機制

源碼分析:

1.當(dāng)我們調(diào)用無參構(gòu)造方法,或者參數(shù)為0時,此時的數(shù)組為一個空數(shù)組。

而當(dāng)?shù)谝淮蝍dd的時候,底層的數(shù)組容量才變成了10;

2.后續(xù)若在需擴容,按照1.5倍擴容

即:

1.無參構(gòu)造方法,或參數(shù)為零構(gòu)造方法,底層數(shù)組為0,第一次add后,底層數(shù)組為10,10個放滿后以1.5倍擴容

2.參數(shù)大于零的構(gòu)造方法,底層數(shù)組為參數(shù),數(shù)組放滿后,以1.5倍擴容。

到此這篇關(guān)于Java超詳細(xì)講解ArrayList與順序表的用法的文章就介紹到這了,更多相關(guān)Java ArrayList與順序表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot中實現(xiàn)定時任務(wù)應(yīng)用實踐

    Spring Boot中實現(xiàn)定時任務(wù)應(yīng)用實踐

    定時任務(wù)一般是項目中都需要用到的,可以用于定時處理一些特殊的任務(wù)。下面這篇文章主要給大家介紹了關(guān)于Spring Boot中實現(xiàn)定時任務(wù)應(yīng)用實踐的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2018-05-05
  • Java實現(xiàn)醫(yī)院管理系統(tǒng)

    Java實現(xiàn)醫(yī)院管理系統(tǒng)

    這篇文章主要介為大家詳細(xì)紹了Java實現(xiàn)醫(yī)院管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • SpringBoot使用@Async注解實現(xiàn)異步調(diào)用

    SpringBoot使用@Async注解實現(xiàn)異步調(diào)用

    這篇文章主要介紹了SpringBoot使用@Async注解實現(xiàn)異步調(diào)用,異步調(diào)用是相對于同步調(diào)用而言的,同步調(diào)用是指程序按預(yù)定順序一步步執(zhí)行,每一步必須等到上一步執(zhí)行完后才能執(zhí)行,異步調(diào)用則無需等待,程序執(zhí)行完即可執(zhí)行,可以減少程序執(zhí)行時間,需要的朋友可以參考下
    2023-10-10
  • 使用Java代碼將IP地址轉(zhuǎn)換為int類型的方法

    使用Java代碼將IP地址轉(zhuǎn)換為int類型的方法

    這篇文章主要介紹了使用Java代碼將IP地址轉(zhuǎn)換為int類型的方法,這也是各大計算機考試和ACM以及面試的常見基礎(chǔ)問題,需要的朋友可以參考下
    2015-08-08
  • 在Java中如何比較兩個對象淺析

    在Java中如何比較兩個對象淺析

    在工作中我們經(jīng)常會遇到這樣的需求——比較兩個對象是否相等,如果不相等的話,取出不相等的字段,這篇文章主要給大家介紹了關(guān)于在Java中如何比較兩個對象的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Java工程師面試題一面二面整理

    Java工程師面試題一面二面整理

    在本篇文章里小編給大家整理的是關(guān)于Java 工程師面試題的相關(guān)知識點,有需要的可以參考下。
    2019-08-08
  • java stream中Collectors的用法實例精講

    java stream中Collectors的用法實例精講

    這篇文章主要為大家介紹了java stream中Collectors的用法實例精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 解決Lombok注解不起作用的問題

    解決Lombok注解不起作用的問題

    這篇文章主要介紹了解決Lombok注解不起作用的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java中FileOutputStream中文亂碼問題解決辦法

    java中FileOutputStream中文亂碼問題解決辦法

    這篇文章主要介紹了java中FileOutputStream中文亂碼問題解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • springboot集成druid連接池配置的方法

    springboot集成druid連接池配置的方法

    這篇文章主要介紹了springboot集成druid連接池配置的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論