1.ArrayList
集合和數(shù)組的優(yōu)勢(shì)對(duì)比:
- 長度可變
- 添加數(shù)據(jù)的時(shí)候不需要考慮索引,默認(rèn)將數(shù)據(jù)添加到末尾
1.1ArrayList類概述
-
什么是集合
? 提供一種存儲(chǔ)空間可變的存儲(chǔ)模型,存儲(chǔ)的數(shù)據(jù)容量可以發(fā)生改變
-
ArrayList集合的特點(diǎn)
? 底層是數(shù)組實(shí)現(xiàn)的,長度可以變化
-
泛型的使用
? 用于約束集合中存儲(chǔ)元素的數(shù)據(jù)類型
1.2ArrayList類常用方法
1.2.1構(gòu)造方法
方法名 | 說明 |
---|---|
public ArrayList() | 創(chuàng)建一個(gè)空的集合對(duì)象 |
1.2.2成員方法
方法名 | 說明 |
---|---|
public boolean remove(Object o) | 刪除指定的元素,返回刪除是否成功 |
public E remove(int index) | 刪除指定索引處的元素,返回被刪除的元素 |
public E set(int index,E element) | 修改指定索引處的元素,返回被修改的元素 |
public E get(int index) | 返回指定索引處的元素 |
public int size() | 返回集合中的元素的個(gè)數(shù) |
public boolean add(E e) | 將指定的元素追加到此集合的末尾 |
public void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
1.2.3示例代碼
public class ArrayListDemo02 {
public static void main(String[] args) {
//創(chuàng)建集合
ArrayList<String> array = new ArrayList<String>();
//添加元素
array.add("hello");
array.add("world");
array.add("java");
//public boolean remove(Object o):刪除指定的元素,返回刪除是否成功
// System.out.println(array.remove("world"));
// System.out.println(array.remove("javaee"));
//public E remove(int index):刪除指定索引處的元素,返回被刪除的元素
// System.out.println(array.remove(1));
//IndexOutOfBoundsException
// System.out.println(array.remove(3));
//public E set(int index,E element):修改指定索引處的元素,返回被修改的元素
// System.out.println(array.set(1,"javaee"));
//IndexOutOfBoundsException
// System.out.println(array.set(3,"javaee"));
//public E get(int index):返回指定索引處的元素
// System.out.println(array.get(0));
// System.out.println(array.get(1));
// System.out.println(array.get(2));
//System.out.println(array.get(3)); //?????? 自己測(cè)試
//public int size():返回集合中的元素的個(gè)數(shù)
System.out.println(array.size());
//輸出集合
System.out.println("array:" + array);
}
}
1.3ArrayList存儲(chǔ)字符串并遍歷
1.3.1案例需求
? 創(chuàng)建一個(gè)存儲(chǔ)字符串的集合,存儲(chǔ)3個(gè)字符串元素,使用程序?qū)崿F(xiàn)在控制臺(tái)遍歷該集合
1.3.2代碼實(shí)現(xiàn)
/*
思路:
1:創(chuàng)建集合對(duì)象
2:往集合中添加字符串對(duì)象
3:遍歷集合,首先要能夠獲取到集合中的每一個(gè)元素,這個(gè)通過get(int index)方法實(shí)現(xiàn)
4:遍歷集合,其次要能夠獲取到集合的長度,這個(gè)通過size()方法實(shí)現(xiàn)
5:遍歷集合的通用格式
*/
public class ArrayListTest01 {
public static void main(String[] args) {
//創(chuàng)建集合對(duì)象
ArrayList<String> array = new ArrayList<String>();
//往集合中添加字符串對(duì)象
array.add("劉正風(fēng)");
array.add("左冷禪");
array.add("風(fēng)清揚(yáng)");
//遍歷集合,其次要能夠獲取到集合的長度,這個(gè)通過size()方法實(shí)現(xiàn)
// System.out.println(array.size());
//遍歷集合的通用格式
for(int i=0; i<array.size(); i++) {
String s = array.get(i);
System.out.println(s);
}
}
}
1.4ArrayList存儲(chǔ)學(xué)生對(duì)象并遍歷
1.4.1案例需求
? 創(chuàng)建一個(gè)存儲(chǔ)學(xué)生對(duì)象的集合,存儲(chǔ)3個(gè)學(xué)生對(duì)象,使用程序?qū)崿F(xiàn)在控制臺(tái)遍歷該集合
1.4.2代碼實(shí)現(xiàn)
/*
思路:
1:定義學(xué)生類
2:創(chuàng)建集合對(duì)象
3:創(chuàng)建學(xué)生對(duì)象
4:添加學(xué)生對(duì)象到集合中
5:遍歷集合,采用通用遍歷格式實(shí)現(xiàn)
*/
public class ArrayListTest02 {
public static void main(String[] args) {
//創(chuàng)建集合對(duì)象
ArrayList<Student> array = new ArrayList<>();
//創(chuàng)建學(xué)生對(duì)象
Student s1 = new Student("林青霞", 30);
Student s2 = new Student("風(fēng)清揚(yáng)", 33);
Student s3 = new Student("張曼玉", 18);
//添加學(xué)生對(duì)象到集合中
array.add(s1);
array.add(s2);
array.add(s3);
//遍歷集合,采用通用遍歷格式實(shí)現(xiàn)
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getName() + "," + s.getAge());
}
}
}
1.5ArrayList存儲(chǔ)學(xué)生對(duì)象并遍歷升級(jí)版
1.5.1案例需求
? 創(chuàng)建一個(gè)存儲(chǔ)學(xué)生對(duì)象的集合,存儲(chǔ)3個(gè)學(xué)生對(duì)象,使用程序?qū)崿F(xiàn)在控制臺(tái)遍歷該集合
? 學(xué)生的姓名和年齡來自于鍵盤錄入
1.5.2代碼實(shí)現(xiàn)
public class ArrayListTest {
public static void main(String[] args) {
//1.創(chuàng)建集合對(duì)象
ArrayList<Student> list = new ArrayList<>();
//2.鍵盤錄入數(shù)據(jù)并添加到集合中
Scanner sc = new Scanner(System.in);
for (int i = 1; i <= 3; i++) {
//創(chuàng)建學(xué)生對(duì)象
Student s = new Student();
//鍵盤錄入學(xué)生信息
System.out.println("請(qǐng)輸入第" + i + "個(gè)學(xué)生的姓名");
String name = sc.next();
System.out.println("請(qǐng)輸入第" + i + "個(gè)學(xué)生的年齡");
int age = sc.nextInt();
//把學(xué)生信息賦值給學(xué)生對(duì)象
s.setName(name);
s.setAge(age);
//把學(xué)生對(duì)象添加到集合當(dāng)中
list.add(s);
}
//遍歷
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println(stu.getName() + ", " + stu.getAge());
}
}
}
1.6 查找用戶是否存在
需求:
1,main方法中定義一個(gè)集合,存入三個(gè)用戶對(duì)象。
用戶屬性為:id,username,password
2,要求:定義一個(gè)方法,根據(jù)id查找對(duì)應(yīng)的學(xué)生信息。
如果存在,返回true
如果不存在,返回false
代碼示例:文章來源地址http://www.zghlxwxcb.cn/news/detail-419332.html
package com.itheima.test4;
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
//1.創(chuàng)建集合
ArrayList<User> list = new ArrayList<>();
//2.添加用戶對(duì)象
User u1 = new User("heima001","zhangsan","123456");
User u2 = new User("heima002","lisi","1234");
User u3 = new User("heima003","wangwu","12345");
//3.添加元素
list.add(u1);
list.add(u2);
list.add(u3);
//3.根據(jù)id查找是否存在
//調(diào)方法
//如果調(diào)用本類中的方法,直接寫方法名就可以。
//如果我要調(diào)用其他類中的方法,需要用對(duì)象去調(diào)用。
boolean flag = contains(list, "heima004");
System.out.println(flag);
}
//1.我要干嘛? 判斷id在集合中是否存在
//2.需要什么? 集合 id
//3.是否需要繼續(xù)使用?需要
//寫在測(cè)試類中的方法,加static
//寫在javabean類中的方法,不加static
public static boolean contains(ArrayList<User> list, String id){
for (int i = 0; i < list.size(); i++) {
User u = list.get(i);
String uid = u.getId();
if(uid.equals(id)){
return true;
}
}
//當(dāng)集合里面所有的元素全部比較完畢了
//如果此時(shí)還不存在,才能返回false
return false;
}
}
1.7 查找用戶的索引
需求:
1,main方法中定義一個(gè)集合,存入三個(gè)用戶對(duì)象。
用戶屬性為:id,username,password
2,要求:定義一個(gè)方法,根據(jù)id查找對(duì)應(yīng)的學(xué)生信息。
如果存在,返回索引
如果不存在,返回-1文章來源:http://www.zghlxwxcb.cn/news/detail-419332.html
代碼示例:
package com.itheima.test5;
import com.itheima.test4.User;
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
//1.創(chuàng)建集合
ArrayList<User> list = new ArrayList<>();
//2.添加用戶對(duì)象
User u1 = new User("heima001","zhangsan","123456");
User u2 = new User("heima002","lisi","1234");
User u3 = new User("heima003","wangwu","12345");
//3.添加元素
list.add(u1);
list.add(u2);
list.add(u3);
//4.查詢索引
int index = findIndex(list, "heima004");
System.out.println(index);
}
//1.我要干嘛?查詢索引
//2.需要什么?集合 id
//3.是否需要繼續(xù)使用 需要返回值
public static int findIndex(ArrayList<User> list, String id){
for (int i = 0; i < list.size(); i++) {
User u = list.get(i);
String uid = u.getId();
if(uid.equals(id)){
return i;
}
}
//如果循環(huán)結(jié)束還沒有找到
return -1;
}
public static boolean contains(ArrayList<User> list, String id){
int index = findIndex(list, id);
if(index >= 0){
return true;
}else{
return false;
}
// return findIndex(list, id) >= 0;
}
}
到了這里,關(guān)于【Java】ArrayList(集合)超詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!