ArrayList的用法
阿新 • 來源:網路 • 發佈:2021-05-07
一.簡介
ArrayList支援可隨需要而增長的動態陣列。在Java陣列中,長度是固定的因此在陣列被建立後不能修改長度,這意味著開發者需要知道陣列的長度。但在一般情況下,只有在執行時才知道長度。為了解決這個問題,ArrayList因此而生
ArrayList:有序有下標 資料可重複,LinkedList:查詢慢,刪除插入快
二.實現
List lists = new ArrayList();(其中的String可以改為integer,double等型別)
注:ArrayList物件只能存放物件,不能存放基礎資料型別的資料。
三.建構函式
ArrayList中定義了三種構造方法
1.ArrayList()----------------構造了空的連結串列。
2.ArrayList(Collection<? extends E> c)------構造了一個包含指定元素集合的連結串列,字元E是一個標記,用來表示集合中元素的型別。
3.ArrayList(int initialCapacity)---------構造了一個大小確定但內容為空的連結串列。initialCapacity引數表示初始容量大小。
ArrayList遍歷方式
ArrayList有三種遍歷方式
迭代器遍歷
Iterator i = arrayList.iterator();
while(it.hasNext()){
System.out.print(i.next() + " ");
}
索引值遍歷
for(int i = 0; i < arrayList.size(); i++){
System.out.print(arrayList.get(i) + " ");
}
for迴圈遍歷
for(Integer number : arrayList){
System.out.print(number + " ");
}
我們可以通過執行程式碼,來了解ArrayList的用法
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class testList {
public static void main(String[] args) {
/**
* ArrayList:有序有下標 資料可重複
* LinkedList:查詢慢,刪除插入快
*/
List list=new ArrayList<>();
一,增
1.

/**
* .add()
* 新增資料,將指定的元素追加到此列表的末尾
*/
list.add("張四");
list.add(10);
list.add(3.14);
list.add('女');
張三
10
3.14
女
2.

/**
* .add(int index,E element)
* 在此列表中的指定位置插入指定的元素
*/
list.add(0, "帥哥");
帥哥
張三
10
3.14
女
3.

/**
* .addAll(Collection<? extends E> c)
* 按指定集合的Iterator返回的順序將指定集合中的所有元素追加到此列表的末尾
*/
list.addAll(list);
4.

/**
* .addAll(int index,Collection<? extends E> c)
* 將指定集合中的所有元素插入到此列表中,從指定的位置開始。
*/
list.addAll(0, list);
二,刪
1.

/**
* .clear()
* 從列表中刪除所有元素
*/
list.clear();
2.

/**
* .remove(值) 根據值進行刪除 返回一個Boolean值
*/
list.remove(3.14);
帥哥
張三
10
女
3.

/**
* .remove(index) 根據下表進行刪除
*/
list.remove(5);
4.

5.

三,改
1.

/**
* .set(index,值) 在指定下標的地方新增值
*/
list.set(1, "李四");
帥哥
李四
張三
10
女
2.

// 將此 ArrayList 例項的容量調整為列表的當前大小(實際元素個數)
public void trimToSize() {
modCount++;
if (size < elementData.length) {
elementData = Arrays.copyOf(elementData, size);
}
}
四,查
1.

/**
* .size 獲取集合長度
*/
int length=list.size();
2.

for(int i=0;i<length;i++) {
/**
* .get(index) 利用下標獲取結合的值
*/
Object o=list.get(i);
System.out.println(o+"");
}
3.


// 返回ArrayList中首次出現的指定元素的索引,或如果此列表不包含元素,則返回 -1
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
// 返回ArrayList中最後一次出現的指定元素的索引,或如果此列表不包含索引,則返回 -1
public int lastIndexOf(Object o) {
if (o == null) {
for (int i = size-1; i >= 0; i--)
if (elementData[i]==null)
return i;
} else {
for (int i = size-1; i >= 0; i--)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
System.out.println("--------第二種--for增強版----------");
/**
* 增強版的for迴圈
* for(資料型別 物件名:集合名){}----集合中的每一個值都迴圈賦值給前面的物件
* 相當於Object o=list.get(i);
*/
for(Object o :list) {
System.out.println(o+" ");
}
4.

System.out.println("--------第三種--迭代迴圈----------");
/**
* .iterator() 獲取集合的迭代器
*/
Iterator iterator=list.iterator();
5.

list.isEmpty()
6.

list.contains("張三")
五,toArray()的使用


// toArray用法
// 第一種方式(最常用)
Integer[] integer = list.toArray(new Integer[0]);
// 第二種方式(容易理解)
Integer[] integer1 = new Integer[list.size()];
arrayList.toArray(integer1);
// 丟擲異常,java不支援向下轉型
//Integer[] integer2 = new Integer[list.size()];
//integer2 = arrayList.toArray();
六,





