Java ArrayList集合詳解(Java動(dòng)態(tài)數(shù)組)
一、ArrayList集合的概述和基本使用
1.概述
ArrayList是集合的一種實(shí)現(xiàn),Collection是所有集合類的父類。
由于數(shù)組在運(yùn)行期間的長度無法改變,所以有了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)獲取集合長度 - size()
int l = list.size();
System.out.println("集合的長度是:"+l);
二、ArrayList集合的詳細(xì)介紹
1.定義一個(gè)ArrayList集合
(1)語法格式
ArrayList<E> list = new ArrayList<>();
(2)解讀
<E>代表泛型,代表集合里裝的類型
泛型只能是引用類型,不能是基本類型
對于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);
對于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í)對應(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í)對應(yīng)的泛型的返回值,在執(zhí)行刪除操作后可以將數(shù)據(jù)接收,查看被刪除的數(shù)據(jù)。
獲取集合長度
public int size():獲取集合長度
int l = list.size();
System.out.println("集合的長度是:"+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ǔ)的對象
Student s1 = new Student("張三",17);
Student s2 = new Student("李四",18);
//將對象信息存入集合
list.add(s1);
list.add(s2);
//使用匿名對象的方式存入也可以,因?yàn)檫@個(gè)對象只會(huì)被使用一次
list.add(new Student("王五",19));
//直接打印集合,會(huì)顯示為對象的內(nèi)存地址值
System.out.println(list);
//因此要想取出數(shù)據(jù),必須再次創(chuàng)建對象接收數(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)建集合對象
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ù)類型,必須使用基本類型對應(yīng)的包裝類。
基本類型對應(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)文章
Java利用Dijkstra算法求解拓?fù)潢P(guān)系最短路徑
迪杰斯特拉算法(Dijkstra)是由荷蘭計(jì)算機(jī)科學(xué)迪家迪杰斯特拉于1959年提出的,因此又叫狄克斯特拉算法。本文將利用迪克斯特拉(Dijkstra)算法求拓?fù)潢P(guān)系最短路徑,感興趣的可以了解一下2022-07-07
Springboot與vue實(shí)例講解實(shí)現(xiàn)前后端分離的人事管理系統(tǒng)
這篇文章主要介紹了如何用Java實(shí)現(xiàn)企業(yè)人事管理系統(tǒng),文中采用springboot+vue實(shí)現(xiàn)前后端分離,感興趣的小伙伴可以學(xué)習(xí)一下2022-06-06
Java應(yīng)用程序CPU100%問題排查優(yōu)化實(shí)戰(zhàn)
這篇文章主要介紹了如何排查和優(yōu)化Java應(yīng)用程序CPU使用率達(dá)到100%的問題,文中通過代碼示例和圖文結(jié)合的方式講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2025-02-02
SpringBoot 集成JUnit5的詳細(xì)操作過程
JUnit5是最新的Java單元測試框架,提供了靈活的測試支持,它由JUnit Platform、JUnit Jupiter和JUnit Vintage組成,支持不同環(huán)境下的測試運(yùn)行,SpringBoot從2.2版本開始默認(rèn)支持JUnit5,本文介紹了SpringBoot 集成JUnit5的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧2024-10-10
Spring @Transactional注解的聲明式事務(wù)簡化業(yè)務(wù)邏輯中的事務(wù)管理
這篇文章主要為大家介紹了Spring @Transactional注解的聲明式事務(wù)簡化業(yè)務(wù)邏輯中的事務(wù)管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
IntelliJ IDEA使用tomcat和jetty配置詳解
這篇文章主要介紹了IntelliJ IDEA使用tomcat和jetty配置詳解,以便進(jìn)一步地開發(fā)和調(diào)試,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10

