Java 集合框架
ArrayList 類是一個可以動態(tài)修改的數(shù)組脓鹃,與普通數(shù)組的區(qū)別就是它是沒有固定大小的限制耕拷,我們可以添加或刪除元素。
ArrayList 繼承了 AbstractList ,并實現(xiàn)了 List 接口。
ArrayList 類位于 java.util 包中弓熏,使用前需要引入它,語法格式如下:
import java.util.ArrayList; // 引入 ArrayList 類
ArrayList<E> objectName =new
ArrayList<>(); // 初始化
E: 泛型數(shù)據(jù)類型糠睡,用于設置 objectName 的數(shù)據(jù)類型挽鞠,只能為引用數(shù)據(jù)類型。
objectName: 對象名狈孔。
ArrayList 是一個數(shù)組隊列信认,提供了相關的添加、刪除均抽、修改嫁赏、遍歷等功能。
添加元素
ArrayList 類提供了很多有用的方法油挥,添加元素到 ArrayList 可以使用 add() 方法:
實例
importjava.util.ArrayList;publicclassRunoobTest{
publicstaticvoidmain(String[]args){
ArrayList<String>sites=newArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites);
? }
}
以上實例潦蝇,執(zhí)行輸出結果為:
[Google, Runoob, Taobao, Weibo]
訪問元素
訪問 ArrayList 中的元素可以使用 get() 方法:
實例
importjava.util.ArrayList;publicclassRunoobTest{ publicstaticvoidmain(String[]args){? ? ArrayList<String>sites=newArrayList<String>();? ? sites.add("Google");? ?
sites.add("Runoob");? ?
sites.add("Taobao");? ?
sites.add("Weibo");?
System.out.println(sites.get(1));// 訪問第二個元素
}}
注意:數(shù)組的索引值從 0 開始款熬。
以上實例,執(zhí)行輸出結果為:
Runoob
修改元素
如果要修改 ArrayList 中的元素可以使用 set() 方法:
實例
importjava.util.ArrayList;publicclassRunoobTest{ publicstaticvoidmain(String[]args){? ? ArrayList<String>sites=newArrayList<String>();? ? sites.add("Google");? ?
sites.add("Runoob");? ?
sites.add("Taobao");? ?
sites.add("Weibo");? ?
sites.set(2,"Wiki");// 第一個參數(shù)為索引位置护蝶,第二個為要修改的值? System.out.println(sites);
}}
以上實例华烟,執(zhí)行輸出結果為:
[Google, Runoob, Wiki, Weibo]
刪除元素
如果要刪除 ArrayList 中的元素可以使用 remove() 方法:
實例
importjava.util.ArrayList;publicclassRunoobTest{ publicstaticvoidmain(String[]args){? ? ArrayList<String>sites=newArrayList<String>();? ? sites.add("Google");? ?
sites.add("Runoob");? ?
sites.add("Taobao");? ?
sites.add("Weibo");? ?
sites.remove(3);// 刪除第四個元素?
System.out.println(sites);
}}
以上實例,執(zhí)行輸出結果為:
[Google, Runoob, Taobao]
計算大小
如果要計算 ArrayList 中的元素數(shù)量可以使用 size() 方法:
實例
importjava.util.ArrayList;publicclassRunoobTest{ publicstaticvoidmain(String[]args){? ? ArrayList<String>sites=newArrayList<String>();? ? sites.add("Google");? ?
sites.add("Runoob");? ?
sites.add("Taobao");? ?
sites.add("Weibo");?
System.out.println(sites.size());
}}
以上實例持灰,執(zhí)行輸出結果為:
4
迭代數(shù)組列表
我們可以使用 for 來迭代數(shù)組列表中的元素:
實例
importjava.util.ArrayList;publicclassRunoobTest{ publicstaticvoidmain(String[]args){? ? ArrayList<String>sites=newArrayList<String>();? ? sites.add("Google");? ?
sites.add("Runoob");? ?
sites.add("Taobao");? ?
sites.add("Weibo");?
for(inti=0;i<sites.size();i++){? ? System.out.println(sites.get(i));?
}
}}
以上實例,執(zhí)行輸出結果為:
Runoob
Taobao
也可以使用 for-each 來迭代元素:
實例
importjava.util.ArrayList;publicclassRunoobTest{ publicstaticvoidmain(String[]args){? ? ArrayList<String>sites=newArrayList<String>();? ? sites.add("Google");? ?
sites.add("Runoob");? ?
sites.add("Taobao");? ?
sites.add("Weibo");?
for(Stringi:sites){? ?
System.out.println(i);?
}
}}
以上實例负饲,執(zhí)行輸出結果為:
Runoob
Taobao
其他的引用類型
ArrayList 中的元素實際上是對象堤魁,在以上實例中,數(shù)組列表元素都是字符串 String 類型返十。
如果我們要存儲其他類型妥泉,而 <E> 只能為引用數(shù)據(jù)類型,這時我們就需要使用到基本類型的包裝類洞坑。
基本類型對應的包裝類表如下:
基本類型引用類型booleanBooleanbyteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacter
此外盲链,BigInteger、BigDecimal 用于高精度的運算迟杂,BigInteger 支持任意精度的整數(shù)刽沾,也是引用類型,但它們沒有相對應的基本類型排拷。
ArrayList<Integer> li=new Arraylist<>();? ? // 存放整數(shù)元素
ArrayList<Character> li=new Arraylist<>();? // 存放字符元素
以下實例使用 ArrayList 存儲數(shù)字(使用 Integer 類型):
實例
importjava.util.ArrayList;publicclassRunoobTest{ publicstaticvoidmain(String[]args){? ? ArrayList<Integer>myNumbers=newArrayList<Integer>();? ? myNumbers.add(10);? ?
myNumbers.add(15);? ?
myNumbers.add(20);? ?
myNumbers.add(25);?
for(inti:myNumbers){? ?
System.out.println(i);?
}
}}
以上實例侧漓,執(zhí)行輸出結果為:
10
15
20
25
ArrayList 排序
Collections 類也是一個非常有用的類,位于 java.util 包中监氢,提供的 sort() 方法可以對字符或數(shù)字列表進行排序布蔗。
以下實例對字母進行排序:
實例
importjava.util.ArrayList;importjava.util.Collections;// 引入 Collections 類publicclassRunoobTest{ publicstaticvoidmain(String[]args){? ? ArrayList<String>sites=newArrayList<String>();? ? sites.add("Taobao");? ?
sites.add("Wiki");? ?
sites.add("Runoob");? ?
sites.add("Weibo");? ?
sites.add("Google");?
Collections.sort(sites);// 字母排序?
for(Stringi:sites){? ?
System.out.println(i);?
}
}}
以上實例,執(zhí)行輸出結果為:
Runoob
Taobao
Wiki
以下實例對數(shù)字進行排序:
實例
importjava.util.ArrayList;importjava.util.Collections;// 引入
Collections 類publicclassRunoobTest{
publicstaticvoidmain(String[]args){? ?
ArrayList<Integer>myNumbers=newArrayList<Integer>();?
myNumbers.add(33);? ?
myNumbers.add(15);? ?
myNumbers.add(20);? ?
myNumbers.add(34);? ?
myNumbers.add(8);? ?
myNumbers.add(12);?
Collections.sort(myNumbers);// 數(shù)字排序? for(inti:myNumbers){
System.out.println(i);?
}
}}
以上實例浪腐,執(zhí)行輸出結果為:
8
12
15
20
33
34