Java ArrayLIst集合使用方法

ArrayList簡介

ArrayList類是一個可以動態修改的數組,與普通數組的區別是隻需要聲明數組名,不需要在開始的時候初始化數組大小,可以動態的添加和刪除元素

ArrayList使用方法

ArrayList類位於java.util包中,使用前要導入包,格式爲

import java.util.ArrayList;//導入包

使用時需要對類進行初始化,初始化格式爲

ArrayList<E> objectName = new ArrayList<>();

其中 objectName爲類名

E爲泛型數據類型,只能爲引用數據類型

基本數據類型和引用數據類型的對應表格爲

基本數據類型 引用數據類型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
bool Boolean

當數據類型爲Integer,名字爲IntDemo時,對該類初始化

ArrayList<Integer> IntDeom = new ArrayList<>();//生成一個名爲IntDemo的表,存儲int型數據

ArrayLIst類的add方法

該方法根據參數的不同有兩種形式

add(E element)

對於初始化的IntDemo表,爲 add(Integer element)

調用該方法添加前十一個自然數的代碼如下

for(int i = 0; i <= 10; i ++){//將十一個自然數添加到表中
    IntDemo.add(i);
}

將26個小寫英文字母添加到char類型的代碼如下

ArrayList<Character> CharDemo = new ArrayList<>();//初始化定義一個char類型的表
for(char element = 'a'; element <= 'z'; a ++){//遍歷26個英文字母並添加到表中
    CharDemo.add(element);
}

當參數有兩個時,方法原型爲

add(int index, E element)

index表示數組下標,element表示要添加進去的元素

該添加元素會佔用原來元素的位置,後面的元素依次後移一位

如在第一個數組中在0 位置添加數據11時

11,0,1,2........

IntDemo.add(0, 11)

只能在該數組原有下標範圍內添加,超過則報錯

如IntDemo.add(13,11)則報錯越界

ArrayList addAll方法

addAll(Collection<? extends E> c)//將一個集合完整的添加到另一個集合中

ArrayList<Integer> IntDemoCopy = new ArrayLIst<>();//創建一個新集合
IntDemoCopy.addAll(IntDemo);//使用addAll方法將IntDemo中的所有元素添加到IntDemoCopy中

addAll(int index, Collection<? extends E> c)//從該集合的某個下標開始添加,一定要判斷是否擴展到該下標,如

IntDemoCopy.addAll(5, IntDemo);//從下標開始插入新的一個元素集

在中間插入會動態重組鏈表,如在1,2,3,4,5的二號下標開始插入7,8的結果爲

1,2,7,8,3,4,5

獲取其中的元素

get(int index)

根據下標獲取元素

ArrayList數據的遍歷

1、採用for循環,根據表的長度迭代輸出

for(int i = 0; i < IntDemo.size(); i ++){//size是該動態數組容量的大小
    System.out.println(IntDemo.get(i));
}

2、採用for each語句,對錶進行遍歷輸出

for(Integer element:IntDemo){
    System.out.println(element);
}

3、採用迭代器

迭代器是一個提供了迭代基本規則的接口

public interface Iterator<E>{
    boolean hasNext();//判斷是否存在下一個元素
    E next();//獲取下一個元素
    void remove();//移除元素
}

對該集合中所有的數據進行迭代,刪除其中大於五的數據,進行迭代輸出的結果爲

Iterator<Integer> it = IntDemo.iterator();//迭代器初始化
//遍歷所有數據並輸出結果
while(it.hasNext()){//當下一個節點不爲空的時候,進行遍歷
    System.out.println(it.next());//next存儲了當前節點的數據值,進行輸出
}
//刪除該集合中所有大於5的節點的數據值
it = IntDemo.iterator();//由於在上面的遍歷中已經到最後一個節點,所以要進行初始化
while(it.hasNext()){//對所有節點進行遍歷
    if(it.next() >= 5){//當值大於等於5的時候
        it.remove();//刪除當前節點
    }
}
it = IntDemo.iterator();//初始化
while(it.hasNext()){
    System.out.println(it.next());
}

修改元素

set(int index, Integer element)//分別對應下標和元素

將該集合中所有大於等於5的數據賦值爲0的寫法如下

for(int i = 0; i < IntDemo.size(); i ++){
    if(IntDemo.get(i) >= 5){
        IntDemo.set(i, 0);
    }
}

不能用迭代器,因爲迭代器中只有刪除的方法,沒有改變值的方法

刪除元素

remove(int index)根據下標進行元素的刪除

將該集合中前五個元素刪除,由於該集合是動態數組結構,每次刪除一個元素集合的結構都會改變,所以只需刪除第一個元素五次就能達到刪除前五個元素的目的,實現如下

for(int i = 0; i < 5; i ++){
    IntDemo.remove(0);
}

remove(object o)//刪除出現的第一個元素o

比如刪除第一個出現的1

IntDemo.remove(new Integer(1));//刪除出現的第一個元素爲1的元素
//由於默認情況下,1是int型,而對象的參數是object,要轉化爲Integer型,int轉化爲Integer的方法
Integer a = new Integer(1);

刪除滿足給定集合條件的元素

removeIf​(Predicate<? super E> filter)

如刪除大於等於5的元素可以寫爲

IntDemo.removeIf(id -> id >= 5);//刪除該集合中所有大於等於五的元素
//lambda寫法 參數 -> 條件

//刪除所有等於2的寫法爲
IntDemo.removeIf(id -> id == 2);

//刪除所有在區間[2,5]中的元素寫法爲
IntDemo.removeIf(id -> id >= 2 && id <= 5);

查找元素

contains(Object o);如果包含返回true

如判斷是否包含元素1的寫法爲

if(IntDemo.contains(new Integer(1)){
    System.out.println("包含元素1");
}

indexOf(Object o);返回該元素第一次出現的下標,不包含,則返回-

查找元素1第一次出現的下標的寫法爲

int FirstIndex = IntDemo.indexOf(new Integer(1));

元素排序

Collections類中有sort方法可以對ArrayLIst集合進行排序

import java.util.Collections;
Collections.sort(IntDemo);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章