數(shù)組為存放一組相同數(shù)據(jù)類型的數(shù)據(jù)提供了方便寒亥,并且通過數(shù)組索引index很容易實(shí)現(xiàn)對元素的存取仅颇,但是數(shù)組也存在如下限制:
- 數(shù)組容量不可擴(kuò)展受神,數(shù)組的容量在定義時已經(jīng)確定剖膳,事后沒有能力擴(kuò)大或縮小容量
- 如果在數(shù)組的某一個位置插入新元素魏颓,后續(xù)的元素沒有辦法做到自動給依次后移
- 如果在數(shù)組的某一個位置刪除元素,后續(xù)的元素也沒有辦法做到自動依次前提
針對以上限制潮秘,Java引入了另一種可變數(shù)組ArrayList琼开,要使用ArrayList,首先引入ArrayList
:
import java.util.ArrayList;
不同于C#的是枕荞,Java中的ArrayList只能存放同一數(shù)據(jù)類型的元素柜候, 聲明數(shù)據(jù)ArrayList對象可以使用泛型的方式:
ArrayList<Object> arrayListName = new ArrayList<Object>();
由于<>
中只能是對象類型,我們在聲明基本數(shù)據(jù)類型的數(shù)組變量時躏精,是不能寫作ArrayList<int> a = new ArrayList<int>();
這種形式的渣刷,解決方法是Java幫我們封裝了與基本數(shù)據(jù)類型相對應(yīng)的對象類,如下表所示是基本數(shù)據(jù)類型的對象類:
基本數(shù)據(jù)類型 | 對象類 |
---|---|
int | Integer |
char | Character |
boolean | Boolean |
double | Double |
通過封裝類矗烛,我們可以定義基本數(shù)據(jù)類型的ArrayList數(shù)組變量了:
ArrayList<Integer> intArrayList = new ArrayList<Integer>();
ArrayList<Double> doubleArrayList = new ArrayList<Double>();
ArrayList<Character> charArrayList = new ArrayList<Character>();
ArrayList屬性和方法
Java提供了許多有用(常用)的ArrayList方法來方便我們操作ArrayList數(shù)組辅柴。如下表所示,即是ArrayList最常用的一些方法:
以數(shù)組[5,9,2]為例
方法名稱 | 舉例 | 描述 |
---|---|---|
size() | list.size() | 返回ArrayList數(shù)組的當(dāng)前長度瞭吃,之所以說是當(dāng)前長度碌嘀,是因?yàn)锳rrayList可以隨時改變數(shù)組的長度 |
toString() | list.toString() | 以特定的格式返回數(shù)組中的元素,例如[5, 9, 2]
|
set(index, value) | list.set(0, 9) | 將數(shù)組某一索引處的值為修改為給定值歪架,調(diào)用后的數(shù)組為[9, 9, 2]
|
get(index) | list.get(0) | 返回數(shù)組某一索引處的值股冗,返回結(jié)果9 |
add(value) | list.add(1) | 添加指定數(shù)值到數(shù)組的末尾,此時數(shù)組為[9, 9, 2, 1]
|
add(index, value) | list.add(0, 5) | 在數(shù)組某一索引處和蚪,插入給定值止状,改元素以后的元素位置依次往后推一個位置,此時數(shù)組為[5, 9, 9, 2, 1]
|
indexOf(value) | list.indexOf(2) | 獲取給定數(shù)值的第一次出現(xiàn)位置的索引值攒霹,本例中怯疤,返回3 |
contains(value) | list.contains(2) | 若數(shù)組包含給定值,則返回true催束,否則集峦,返回false |
remove(index) | list.remove(3) | 移除數(shù)組某一索引處的值,該索引以后的所有元素依次往前移一個位置,此時數(shù)組為[5, 9, 9, 1]
|
以上表格中用到的示例代碼為:
ArrayList<Integer> intArrayList = new ArrayList<Integer>();
System.out.println(intArrayList.size());
intArrayList.add(5);
intArrayList.add(9);
intArrayList.add(2);
System.out.println(intArrayList.toString());
intArrayList.set(0,9);
System.out.println(intArrayList.toString());
System.out.println(intArrayList.get(0));
intArrayList.add(1);
System.out.println(intArrayList.toString());
intArrayList.add(0,5);
System.out.println(intArrayList.toString());
System.out.println(intArrayList.indexOf(2));
System.out.println("intArrayList是否包含2: "+ intArrayList.contains(2));
System.out.println("IntArrayList是否包含3: "+ intArrayList.contains(3));
intArrayList.remove(3);
System.out.println(intArrayList.toString());
> 輸出結(jié)果
0
[5, 9, 2]
[9, 9, 2]
9
[9, 9, 2, 1]
[5, 9, 9, 2, 1]
3
intArrayList是否包含2: true
IntArrayList是否包含3: false
[5, 9, 9, 1]
通過使用ArrayList數(shù)組,我們解決了數(shù)組的容量不可擴(kuò)展,插入刪除元素不方便的限制策精。