一.介紹
ArrayList就是動態(tài)數(shù)組,用MSDN中的說法佛猛,就是Array的復雜版本制妄,它提供了動態(tài)的增加和減少元素,實現(xiàn)了Collection和List接口酷窥,靈活的設置數(shù)組的大小等好處.
每個 ArrayList 實例都有一個容量咽安。該容量是指用來存儲列表元素的數(shù)組的大小。它總是至少等于列表的大小蓬推。隨著向 ArrayList 中不斷添加元素妆棒,其容量也自動增長。并未指定增長策略的細節(jié)沸伏,因為這不只是添加元素會帶來分攤固定時間開銷那樣簡單.
二.知識點介紹
1糕珊、ArrayList集合概述
2、ArrayList集合的使用格式
3毅糟、ArrayList類的構造方法和成員方法
三.上課對應視頻的說明文檔
1.ArrayList集合概述
雖然在Java中數(shù)組是運算速度最快的容器红选,但是在實際開發(fā)過程中,使用最頻繁的數(shù)據(jù)容器并不是數(shù)組留特,而是ArrayList集合纠脾。
ArrayList是Java集合框架體系(Java Collections Framework)中的一員,完整的集合體系會在后邊的集合章節(jié)中重點介紹蜕青。這里介紹必要知識:
ArrayList與數(shù)組類似,均將元素從0開始編號糊渊,但是它比數(shù)組更方便右核,長度可變就是方便處之一,并且集合與數(shù)組訪問數(shù)據(jù)的方式也不同渺绒,集合可以調用功能強大的方法來滿足不同需求贺喝。
2.ArrayList集合的使用格式
ArrayList同為引用類型,符合引用類型的使用方式宗兼,如下:
導包:import java.util.ArrayList;
創(chuàng)建對象:
與其他普通的引用數(shù)據(jù)類型創(chuàng)建方式完全相同躏鱼,但是要指定容器中存儲的數(shù)據(jù)類型:
類名<集合內元素類型> 變量 = new 類名<集合內元素類型>();
ArrayList<String>? xxXX = new ArrayList<String>();
注意:集合中只能存儲引用數(shù)據(jù)類型,存儲基本類型時殷绍,存儲的類型為對應每個基本類型對應的引用數(shù)據(jù)染苛。
int? Integer
double Double
char? Character
ArrayList<Integer>? yyYY = new ArrayList<Integer>();
ArrayList<Double>? zzZZ = new ArrayList< Double >();
/*
ArrayList集合
ArrayList是引用數(shù)據(jù)類型
導包 import? java.util.ArrayList;
創(chuàng)建對象 ArrayList<集合中存儲元素的數(shù)據(jù)類型>? 變量名 = new ArrayList<集合中存儲元素的數(shù)據(jù)類型>();
調用方法
變量名.方法名();
add(參數(shù))? 向集合中添加元素
get(索引)? 通過索引獲取集合中的元素
*/
//導包
import java.util.ArrayList;
public class Demo01_ArrayList{
public static void main(String[] args){
//創(chuàng)建集合ArrayList對象
ArrayList<String>? nameList = new ArrayList<String>();
//調用方法
String name1 = "柳巖";
String name2 = "金蓮";
nameList.add(name1);
nameList.add(name2);
nameList.add("唐嫣");
//獲取集合中的元素
String thisName = nameList.get(2);
System.out.println(thisName);
System.out.println(nameList.get(1));
}
}
注意事項:
/*
ArrayList的注意事項
ArrayList只能存儲引用數(shù)據(jù)類型? 要想存儲基本數(shù)據(jù)類型的話 需要存對應的引用類型
int? ? Integer
double Double
方法調用時,static修飾的方法只能調用static修飾的其他方法主到,
指的是
直接調用時茶行,其他方法必須用static修飾
但是使用 對象名.方法名() 訪問時,可以不加satatic
public boolean add(元素類型 e)? 直接向集合添加元素
public int size()? ? ? 獲取集合長度
public 元素類型 get(int index)? 根據(jù)指定索引獲取集合元素
public 元素類型 remove(int index)? ? ? 根據(jù)指定索引刪除集合元素
public 元素類型 set(int index, 元素類型obj)修改指定索引出的值為新值
*/
//導入集合
import java.util.ArrayList;
public class Demo02_ArrayList{
public static void main(String[] args){
//存儲整數(shù)的集合
ArrayList<Integer>? list = new ArrayList<Integer>();
//添加元素
int a = 10;
int b = 20;
list.add(a);
list.add(b);
list.add(123);
//刪除索引為2的元素? 第三個元素
int removeNumber = list.remove(2);
System.out.println(removeNumber);
//修改索引為1的元素 第二個元素
list.set(1,100);
System.out.println("---------------------");
//獲取集合長度
int size = list.size();
System.out.println(size);
System.out.println("---------------------");
//獲取集合中的數(shù)據(jù)
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
}
public static void method(){
System.out.println("我是一個方法");
}
}
3.ArrayList類的構造方法和成員方法
ArrayList<E>集合:大小可變數(shù)組的實現(xiàn)
<E>:是一種特殊的數(shù)據(jù)類型登钥,泛型畔师。
在出現(xiàn)E的地方我們使用引用數(shù)據(jù)類型替換即可
舉例:ArrayList<String>,ArrayList<Student>
構造方法
ArrayList()
成員方法
添加元素
public boolean add(E e):添加元素
public void add(int index,E element):在指定的索引處添加一個元素
public class Demo01ArrayList {
public static void main(String[] args) {
//創(chuàng)建集合對象
ArrayList<String> list = new? ArrayList<String>();
//add(E e):添加元素
list.add("hello");
list.add("world");
list.add("java");
//add(int index,E element):在指定的索引處添加一個元素
list.add(1, "android");
System.out.println("array:"+list);
}
}
獲取元素
public E get(int index):返回指定索引處的元素
集合長度
public int size():返回集合中的元素的個數(shù)
刪除元素
public boolean remove(Object o):刪除指定的元素,返回刪除是否成功
public E remove(int index):刪除指定索引處的元素牧牢,返回被刪除的元素
修改元素
public E set(int index,E element):修改指定索引處的元素看锉,返回被修改的元素
public class Demo02ArrayList {
public static void main(String[] args) {
//創(chuàng)建集合對象
ArrayList<String> array = new ArrayList<String>();
//添加元素
array.add("hello");
array.add("world");
array.add("java");
//public E get(int index):返回指定索引處的元素
System.out.println("get:"+array.get(0));
System.out.println("get:"+array.get(1));
System.out.println("get:"+array.get(2));
//public int size():返回集合中的元素的個數(shù)
System.out.println("size:"+array.size());
//public boolean remove(Object o):刪除指定的元素姿锭,返回刪除是否成功
System.out.println("remove:"+array.remove("world"));//true
System.out.println("remove:"+array.remove("world"));//false
//public E remove(int index):刪除指定索引處的元素,返回被刪除的元素
System.out.println("remove:"+array.remove(0));
//public E set(int index,E element):修改指定索引處的元素伯铣,返回被修改的元素
System.out.println("set:"+array.set(0, "android"));
//輸出
System.out.println("array:"+array);
}
}
4.ArrayList集合使用練習
4.1呻此、ArrayList存放基本數(shù)據(jù)類型遍歷? ?
即依次獲取集合中每一個元素,并打印
/*
ArrayList集合存儲基本數(shù)據(jù)類型 并遍歷? 求和? 求最大值
*/
import java.util.ArrayList;
public class Demo03_ArrayList{
public static void main(String[] args){
ArrayList<Double>? list = new ArrayList<Double>();
double a = 10.1;
double b = 20.2;
//向集合中添加元素
list.add(a);
list.add(b);
list.add(30.3);
double sum = 0.0;
double max = list.get(0);
//獲取集合中的元素 遍歷集合
for(int i = 0;i<list.size();i++){
double number = list.get(i);
System.out.println(number);
//求和
sum += number;
//求最大值
if(max < number){
max = number;
}
}
System.out.println(sum);
System.out.println(max);
}
}
4.2懂傀、ArrayList存放自定義類型遍歷
/*
集合存儲自定義類型? Person
擴展內容
求年齡最大的那個人是誰
*/
import java.util.ArrayList;
public class Demo04_ArrayList{
public static void main(String[] args){
//創(chuàng)建集合對象
ArrayList<Person>? list = new ArrayList<Person>();
//調用add方法向集合中添加元素
Person p = new Person();
p.name = "柳巖";
p.age = 38;
Person p2 = new Person();
p2.name = "唐嫣";
p2.age = 18;
Person p3= new Person();
p3.name = "金蓮";
p3.age = 1000;
list.add(p);
list.add(p2);
list.add(p3);
// Person? thisP = list.get(0);
// Person thisP2 = list.get(1);
// System.out.println(thisP.name);
// System.out.println(thisP2.name);
//求年齡和
int sumAge = 0;
//最大年齡
Person? firstP = list.get(0);
int maxAge = firstP.age;
//集合存儲自定義Person 遍歷
for(int i = 0 ;i<list.size();i++){
Person thisPerson = list.get(i);
System.out.println("姓名"+thisPerson.name);
System.out.println("年齡"+thisPerson.age);
//年齡求和
sumAge += thisPerson.age;
//求最大年齡
if(maxAge<thisPerson.age){
maxAge = thisPerson.age;
//如果年齡比第一個人大趾诗,就給第一個人重新賦值
firstP = thisPerson;
}
}
System.out.println(sumAge);
System.out.println("最大年齡:"+maxAge+"年齡最大的人是:"+firstP.name);
}
}? ? ?
4.3、ArrayList求多個整數(shù)的和
/*
ArrayList集合存儲基本數(shù)據(jù)類型 并遍歷? 求和? 求最大值
*/
import java.util.ArrayList;
public class Demo03_ArrayList{
public static void main(String[] args){
ArrayList<Double>? list = new ArrayList<Double>();
double a = 10.1;
double b = 20.2;
//向集合中添加元素
list.add(a);
list.add(b);
list.add(30.3);
double sum = 0.0;
double max = list.get(0);
//獲取集合中的元素 遍歷集合
for(int i = 0;i<list.size();i++){
double number = list.get(i);
System.out.println(number);
//求和
sum += number;
//求最大值
if(max < number){
max = number;
}
}
System.out.println(sum);
System.out.println(max);
}
}
4.4蹬蚁、ArrayList求多個人中年齡最大的人是誰
/*
集合存儲自定義類型? Person
擴展內容
求年齡最大的那個人是誰
*/
import java.util.ArrayList;
public class Demo04_ArrayList{
public static void main(String[] args){
//創(chuàng)建集合對象
ArrayList<Person>? list = new ArrayList<Person>();
//調用add方法向集合中添加元素
Person p = new Person();
p.name = "柳巖";
p.age = 38;
Person p2 = new Person();
p2.name = "唐嫣";
p2.age = 18;
Person p3= new Person();
p3.name = "金蓮";
p3.age = 1000;
list.add(p);
list.add(p2);
list.add(p3);
// Person? thisP = list.get(0);
// Person thisP2 = list.get(1);
// System.out.println(thisP.name);
// System.out.println(thisP2.name);
//求年齡和
int sumAge = 0;
//最大年齡
Person? firstP = list.get(0);
int maxAge = firstP.age;
//集合存儲自定義Person 遍歷
for(int i = 0 ;i<list.size();i++){
Person thisPerson = list.get(i);
System.out.println("姓名"+thisPerson.name);
System.out.println("年齡"+thisPerson.age);
//年齡求和
sumAge += thisPerson.age;
//求最大年齡
if(maxAge<thisPerson.age){
maxAge = thisPerson.age;
//如果年齡比第一個人大恃泪,就給第一個人重新賦值
firstP = thisPerson;
}?
}
System.out.println(sumAge);
System.out.println("最大年齡:"+maxAge+"年齡最大的人是:"+firstP.name);
}
}
4.5、存儲字符串并遍歷
public class Demo03ArrayList {
public static void main(String[] args) {
//創(chuàng)建集合對象
ArrayList<String> list = new ArrayList<String>();
//添加元素
list.add("hello");
list.add("world");
list.add("java");
//獲取元素
//原始做法
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
System.out.println("----------");
for(int i=0; i<3; i++) {
System.out.println(list.get(i));
}
System.out.println("----------");
//如何知道集合中元素的個數(shù)呢?size()
for(int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("----------");
//最標準的用法
for(int i=0; i<list.size(); i++) {
String s = list.get(i);
System.out.println(s);
}
}
}
4.6犀斋、給定一個字符串數(shù)組:{“張三豐”,“宋遠橋”,“張無忌”,“殷梨亭”,“張翠山”,“莫聲谷”}贝乎,將數(shù)組中的元素添加到集合中,并把所有姓張的人員打印到控制臺上叽粹。
public class Demo02ArrayListTest {
public static void main(String[] args) {
//定義字符串數(shù)組
String[] strArray = {"張三豐","宋遠橋","張無忌","殷梨亭","張翠山","莫聲谷"};
//創(chuàng)建集合對象
ArrayList<String> list = new ArrayList<String>();
//遍歷字符串數(shù)組览效,獲取到每一個字符串元素
for(int x=0; x<strArray.length; x++) {
//把獲取到的字符串元素添加到集合
list.add(strArray[x]);
}
//遍歷集合
for(int x=0; x<list.size(); x++) {
String s = list.get(x);
//要判斷每一個字符串元素是否以"張"開頭,如果是虫几,就輸出在控制臺
if(s.startsWith("張")) {
System.out.println(s);
}
}
}
}