Java ArrayList集合詳解(Java動(dòng)態(tài)數(shù)組)
一、ArrayList集合的概述和基本使用
1.概述
ArrayList是集合的一種實(shí)現(xiàn),Collection是所有集合類的父類。
由于數(shù)組在運(yùn)行期間的長(zhǎng)度無法改變,所以有了ArrayList集合。
2.基本使用
創(chuàng)建ArrayList集合
import java.util.ArrayList;//不要忘記導(dǎo)包 //<E>代表泛型,E可以定義為所有的引用類型,例如String、類等 ArrayList<E> list = new ArrayList<>();
將其它類型的集合轉(zhuǎn)為ArrayList
ArrayList<String> setList = new ArrayList<>(new HashSet())
常用的方法
(1)添加數(shù)據(jù) - add()
ArrayList<String> list = new ArrayList<>(); list.add("csdn");
(2)獲取數(shù)據(jù) - get()
list.get(i);//i為集合的元素索引
(3)刪除數(shù)據(jù) - remove()
list.remove(i);//i為集合的元素索引
(4)獲取集合長(zhǎng)度 - size()
int l = list.size(); System.out.println("集合的長(zhǎng)度是:"+l);
二、ArrayList集合的詳細(xì)介紹
1.定義一個(gè)ArrayList集合
(1)語法格式
ArrayList<E> list = new ArrayList<>();
(2)解讀
<E>代表泛型,代表集合里裝的類型
泛型只能是引用類型,不能是基本類型
對(duì)于ArrayList集合,直接打印的結(jié)果并不是地址值,而是內(nèi)容,如果是空則打印 []
從jdk1.7開始右側(cè)尖括號(hào)內(nèi)部可以不寫內(nèi)容
2.ArrayList集合常用的方法
定義集合
定義一個(gè)泛型為String的ArrayList集合
ArrayList<String> list = new ArrayList<>(); System.out.println(list);//打印結(jié)果為:[]
添加元素
public boolean add(E e):向集合中添加元素,類型與泛型一致
//只能添加字符串類型,其他類型會(huì)報(bào)錯(cuò) list.add("CSDN"); list.add("aaaa"); list.add("bbbb"); System.out.println(list); //打印集合結(jié)果為:[CSDN, aaaa, bbbb]
通過ArrayList類的可以看出add方法有一個(gè)布爾類型的返回值,可以用于返回添加數(shù)據(jù)是否成功。
boolean res = list.add("ssss"); System.out.println("添加是否成功"+res);
對(duì)于ArrayList集合來說,使用add方法一定會(huì)添加成功(其它集合不一定),所以可以不使用add方法的返回值。
獲取元素
public E get(int index):從集合中獲取元素,參數(shù)index代表元素索引編號(hào)。
//獲取集合的第 1 個(gè)元素 String strAdd = list.get(0); System.out.println(Str);//結(jié)果為:CSDN //根據(jù)添加順序,第 0 號(hào)元素應(yīng)為 “CSDN”
get方法有一個(gè)與集合定義時(shí)對(duì)應(yīng)的泛型的返回值,接收數(shù)據(jù)時(shí)應(yīng)注意數(shù)據(jù)類型。
刪除元素
public E remove(int index):從集合中刪除元素,參數(shù)index代表元素索引編號(hào)。
//刪除集合的第 3 個(gè)元素 String strRemove = list.remove(2); System.out.println("被刪除的是:" + str);
remove方法有一個(gè)與集合定義時(shí)對(duì)應(yīng)的泛型的返回值,在執(zhí)行刪除操作后可以將數(shù)據(jù)接收,查看被刪除的數(shù)據(jù)。
獲取集合長(zhǎng)度
public int size():獲取集合長(zhǎng)度
int l = list.size(); System.out.println("集合的長(zhǎng)度是:"+l);
3.將"類"存入ArrayList集合
(1)首先定義一個(gè)Student的標(biāo)準(zhǔn)類
public class Student { private String name; private int age; public Person() {} public Person(String name, int age) {this.name = name;this.age = age;} public String getName() {return name;} public void setName(String name) {this.name = name;} public int getAge() {return age;} public void setAge(int age) {this.age = age;} }
(2)創(chuàng)建集合存入"類"
import java.util.ArrayList; public class Test { public static void main(String[] args) { //創(chuàng)建集合 ArrayList<Studentn> list = new ArrayList<>(); //創(chuàng)建要存儲(chǔ)的對(duì)象 Student s1 = new Student("張三",17); Student s2 = new Student("李四",18); //將對(duì)象信息存入集合 list.add(s1); list.add(s2); //使用匿名對(duì)象的方式存入也可以,因?yàn)檫@個(gè)對(duì)象只會(huì)被使用一次 list.add(new Student("王五",19)); //直接打印集合,會(huì)顯示為對(duì)象的內(nèi)存地址值 System.out.println(list); //因此要想取出數(shù)據(jù),必須再次創(chuàng)建對(duì)象接收數(shù)據(jù) Student p11 = list.get(0); System.out.println("姓名:"+p11.getName()+",年齡:"+p11.getAge()); }
4.遍歷ArrayList集合
import java.util.ArrayList; /* 遍歷ArrayList集合 */ public class ArrayListEach { public static void main(String[] args) { //創(chuàng)建集合對(duì)象 ArrayList<String> list = new ArrayList<>(); //添加數(shù)據(jù) list.add("aaaa"); list.add("bbbb"); list.add("cccc"); //遍歷集合 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
5.將基本數(shù)據(jù)類型存入ArrayList集合
如果希望向ArrayList集合里放基本數(shù)據(jù)類型,必須使用基本類型對(duì)應(yīng)的包裝類。
基本類型對(duì)應(yīng)的包裝類如下:
基本類型 | 包裝類(引用類型,包裝類都位于java.lang包下) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
【tips】
除了int和char的包裝類不是首字母大寫外,其它六種基本類型的包裝類均是首字母大寫。
import java.util.ArrayList; public class ArrayListBasic { public static void main(String[] args) { //從jdk1.5開始可以自動(dòng)裝箱,自動(dòng)拆箱 //基本類型 --> 包裝類型 裝箱 //包裝類型 --> 基本類型 拆箱 ArrayList<Integer> list = new ArrayList<>(); list.add(100); list.add(200); list.add(300); //取出數(shù)據(jù) int num = list.get(1); System.out.println("取出的數(shù)據(jù)為:"+num);//結(jié)果為:取出的數(shù)據(jù)為:200 } }
6.ArrayList作為方法的參數(shù)
案例分析:
1.ArrayList作為參數(shù)
2.使用"{ }“作為開結(jié)尾,使用”、"分隔每個(gè)元素
import java.util.ArrayList; public class ArrayListParam { public static void main(String[] args) { //創(chuàng)建集合 ArrayList<String> list = new ArrayList<>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); //System.out.println(list); //調(diào)用方法;并將創(chuàng)建的集合作為參數(shù),傳遞給方法 printArrayList(list); } //編寫打印數(shù)組的方法,并將ArrayList集合設(shè)置為方法的參數(shù) public static void printArrayList(ArrayList list){ System.out.print("{"); for (int i = 0; i < list.size(); i++) { if(i == list.size()-1){ System.out.print(list.get(i)); System.out.print("}"); }else { System.out.print(list.get(i)+"、"); } } } }
7.ArrayList作為方法的返回值
案例分析:
1.使用ArrayList集合作為方法的返回值
2.使用大集合存放20個(gè)數(shù)字,并篩選偶數(shù)放入小集合
import java.util.ArrayList; import java.util.Random; public class ArrayListReturn { public static void main(String[] args) { ArrayList<Integer> list = returnArrayList(); System.out.println(list); } //定義需求方法,并將返回值類型設(shè)置為ArrayList集合 public static ArrayList<Integer> returnArrayList(){ Random r = new Random(); //定義大集合 ArrayList<Integer> listBig = new ArrayList<>(); //定義小集合 ArrayList<Integer> listSmall = new ArrayList<>(); for (int i = 0; i < 20; i++) { int num = r.nextInt(10); //向集合中添加數(shù)據(jù) listBig.add(num); //判斷添加的數(shù)據(jù)是否為偶數(shù),如果是,則將數(shù)據(jù)存入小集合 if(listBig.get(i)%2 == 0){ listSmall.add(listBig.get(i)); } } System.out.println("偶數(shù)一共有:"+listSmall.size()+"個(gè)"); //返回值為小集合 return listSmall; } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot整合quartz實(shí)現(xiàn)定時(shí)任務(wù)
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何整合quartz實(shí)現(xiàn)定時(shí)任務(wù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10Java安全 ysoserial CommonsCollections2示例分析
這篇文章主要為大家介紹了Java安全 ysoserial CommonsCollections2示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11SpringBoot通過配置Swagger權(quán)限解決Swagger未授權(quán)訪問漏洞問題
這篇文章主要介紹了SpringBoot通過配置Swagger權(quán)限解決Swagger未授權(quán)訪問漏洞問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Servlet第一個(gè)項(xiàng)目的發(fā)布(入門)
這篇文章主要介紹了Servlet第一個(gè)項(xiàng)目的發(fā)布,下面是用servlet實(shí)現(xiàn)的一個(gè)簡(jiǎn)單的web項(xiàng)目,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2021-04-04簡(jiǎn)單介紹區(qū)分applet和application的方法
applet和application都是Java語言編寫出來的應(yīng)用程序,本文簡(jiǎn)單介紹了二者的不同之處,需要的朋友可以參考下2017-09-09SpringBoot依賴和代碼分開打包的實(shí)現(xiàn)步驟
本文主要介紹了SpringBoot依賴和代碼分開打包的實(shí)現(xiàn)步驟,,這種方法將依賴和代碼分開打包,一般更新只有代碼修改,Pom文件是不會(huì)經(jīng)常改動(dòng)的,感興趣的可以了解一下2023-10-10使用Springboot打成jar包thymeleaf的問題
這篇文章主要介紹了使用Springboot打成jar包thymeleaf的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11springboot vue組件開發(fā)實(shí)現(xiàn)接口斷言功能
這篇文章主要為大家介紹了springboot+vue組件開發(fā)實(shí)現(xiàn)接口斷言功能,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05