從屌絲到架構師的飛越(集合篇)-ArrayList

一.介紹

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);

}

}

}

}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末锤灿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子辆脸,更是在濱河造成了極大的恐慌但校,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啡氢,死亡現(xiàn)場離奇詭異状囱,居然都是意外死亡,警方通過查閱死者的電腦和手機倘是,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門亭枷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搀崭,你說我怎么就攤上這事叨粘。” “怎么了门坷?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵宣鄙,是天一觀的道長。 經常有香客問我默蚌,道長冻晤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任绸吸,我火速辦了婚禮鼻弧,結果婚禮上设江,老公的妹妹穿的比我還像新娘。我一直安慰自己攘轩,他們只是感情好叉存,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著度帮,像睡著了一般歼捏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上笨篷,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天瞳秽,我揣著相機與錄音,去河邊找鬼率翅。 笑死练俐,一個胖子當著我的面吹牛,可吹牛的內容都是我干的冕臭。 我是一名探鬼主播腺晾,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辜贵!你這毒婦竟也來了悯蝉?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤托慨,失蹤者是張志新(化名)和其女友劉穎泉粉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榴芳,經...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年跺撼,在試婚紗的時候發(fā)現(xiàn)自己被綠了窟感。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡歉井,死狀恐怖柿祈,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情哩至,我是刑警寧澤躏嚎,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站菩貌,受9級特大地震影響卢佣,放射性物質發(fā)生泄漏。R本人自食惡果不足惜箭阶,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一虚茶、第九天 我趴在偏房一處隱蔽的房頂上張望戈鲁。 院中可真熱鬧,春花似錦嘹叫、人聲如沸婆殿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婆芦。三九已至,卻和暖如春喂饥,著一層夾襖步出監(jiān)牢的瞬間消约,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工仰泻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留荆陆,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓集侯,卻偏偏與公主長得像被啼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子棠枉,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內容