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

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

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

簡(jiǎn)要介紹

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

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

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

Arraylist容器類的使用

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

 public static void main(String[] args) {
        //無(wú)參數(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進(jìn)行初始化(此處是ArrayList)
        List<Integer> list3 = new ArrayList<>(list1);

ArrayList的常見(jiàn)方法

方法解釋
boolean add(E e)尾插e(cuò)
void add(int index, E element)將 e 插入到 index 位置
boolean addAll(Collection<? extends E> c)將集合 c 中的元素 尾插到該集合中
E remove(int index)刪除 index 位置元素并返回
boolean remove(Object o)刪除遇到的第一個(gè) 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)返回第一個(gè) o 所在下標(biāo)
int lastIndexOf(Object o)返回最后一個(gè) 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("盛夏");//刪除遇到的第一個(gè)元素“盛夏”,刪除成功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("盛夏");//返回第一個(gè) "盛夏" 所在下標(biāo)
        list.lastIndexOf("盛夏");// 返回最后一個(gè) "盛夏" 的下標(biāo)
        //截取list的[0,1)為subList,注意區(qū)間左閉右開(kāi)
        List<String> subList = list.subList(0,1);

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

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中的擴(kuò)容機(jī)制

源碼分析:

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

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

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

即:

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

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

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

相關(guān)文章

最新評(píng)論