最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java超詳細講解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)獲取下標 index 位置元素
E set(int index, E element)將下標 index 位置元素設(shè)置為 element
void clear()清空順序表
boolean contains(Object o)判斷 o 是否在線性表中
int indexOf(Object o)返回第一個 o 所在下標
int lastIndexOf(Object o)返回最后一個 o 的下標
List< E > subList(int fromIndex, int toIndex)截取部分 list
List<String> list = new ArrayList<>();
        list.add("盛夏");// 尾插元素 “盛夏”
        list.add(1,"洋光");//在1下標處插入元素 “洋光”
        list.addAll(list);//將list中的元素全部尾插
        list.remove(0);//刪除0下標處的元素
        boolean flg = list.remove("盛夏");//刪除遇到的第一個元素“盛夏”,刪除成功flg為true,刪除失敗flg為false;
        String s = list.get(0);//獲取0下標處的元素
        list.set(0,"盛夏");//將0下標元素設(shè)為 “盛夏”
        boolean flg1 = list.contains("盛夏");//查詢“盛夏”是否在順序表內(nèi),存在flg1為true,不存在flg1為false;
        list.indexOf("盛夏");//返回第一個 "盛夏" 所在下標
        list.lastIndexOf("盛夏");// 返回最后一個 "盛夏" 的下標
        //截取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.當我們調(diào)用無參構(gòu)造方法,或者參數(shù)為0時,此時的數(shù)組為一個空數(shù)組。

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

相關(guān)文章

最新評論

天柱县| 德令哈市| 清苑县| 云林县| 广汉市| 玉树县| 嵊泗县| 洞头县| 顺平县| 高密市| 安徽省| 新河县| 凤山市| 沾益县| 柳江县| 白玉县| 德安县| 沙河市| 广昌县| 广宗县| 永福县| 山东省| 赤城县| 嘉定区| 定西市| 拉萨市| 农安县| 南江县| 大连市| 城口县| 溧水县| 吉首市| 海原县| 五河县| 淅川县| 陆丰市| 定陶县| 湘乡市| 昌宁县| 美姑县| 得荣县|