1.14 ArrayList集合
1.ArrayList
1.1ArrayList類概述【了解】
什麼是集合
提供一種存儲空間可變的存儲模型,存儲的資料容量可以發生改變
ArrayList集合的特點
底層是數組實作的,長度可以變化
泛型的使用
用于限制集合中存儲元素的資料類型
1.2ArrayList類常用方法【應用】
1.2.1構造方法
public ArrayList() 創造一個空的集合對象
1.2.2成員方法
方法名 | 說明 |
---|---|
public boolean remove(Object o) | 删除指定的元素,傳回删除是否成功 |
public E remove(Object o) | 删除指定索引處的元素,傳回被删除的元素 |
public E set(int index,E element) | 修改指定索引處的元素,傳回被修改的元素 |
public E get(int index) | 傳回指定索引處的元素 |
public int size() | 傳回集合中的元素的個數 |
public boolean add(E e) | 将指定的元素追加到此集合的末尾 |
public void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
1.2.3示例代碼
package demo07.demo02;
import java.util.ArrayList;
public class ArrayListDemo01 {
public static void main(String[] args) {
// 建立集合
ArrayList<String> array = new ArrayList<>();
// 添加元素
array.add("hello");
array.add("word");
array.add("123");
array.add("你好");
// | public boolean remove(Object o) | 删除指定的元素,傳回删除是否成功 |
boolean b1 = array.remove("你好");
System.out.println(b1);
System.out.println("------------------");
// | public E remove(Object o) | 删除指定索引處的元素,傳回被删除的元素 |
String re = array.remove(0);
System.out.println(re);
System.out.println("------------------");
// | public E set(int index,E element) | 修改指定索引處的元素,傳回被修改的元素 |
String hi = array.set(0, "嗨");
System.out.println(hi);
System.out.println("------------------");
// | public E get(int index) | 傳回指定索引處的元素 |
String s = array.get(0);
System.out.println(s);
System.out.println("------------------");
// | public int size() | 傳回集合中的元素的個數 |
int size = array.size();
System.out.println(size);
System.out.println("------------------");
// | public boolean add(E e) | 将指定的元素追加到此集合的末尾 |
boolean b2 = array.add("Java");
System.out.println(b2);
System.out.println("------------------");
// | public void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
array.add(3, "HELLO");
System.out.println(array.get(3));
System.out.println("------------------");
for (String s1 : array) {
System.out.print(s1 + " ");
}
}
}
1.3ArrayList存儲字元串并周遊【應用】
1.3.1案例需求
建立一個存儲字元串的集合,存儲3個字元串元素,使用程式實作在控制台周遊該集合
1.3.2代碼實作
package demo07.demo02;
import java.util.ArrayList;
public class ArrayListDemo02 {
public static void main(String[] args) {
// 建立集合
ArrayList<String> array = new ArrayList<>();
// 添加元素
array.add("hello");
array.add("word");
array.add("你好");
// 方法一 普通for循環
for (int i = 0; i < array.size(); i++) {
System.out.print(array.get(i) + " ");
}
System.out.println("------");
// 方法二 增強for循環
for (String s : array) {
System.out.print(s + " ");
}
}
}
1.4ArrayList存儲學生對象并周遊【應用】
1.4.1案例需求
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合
package demo07.demo03;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(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;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
package demo07.demo03;
import java.util.ArrayList;
/*
### 1.4ArrayList存儲學生對象并周遊【應用】
#### 1.4.1案例需求
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合
*/
public class StudentArrayList {
public static void main(String[] args) {
// 建立集合
ArrayList<Student> list = new ArrayList<>();
// 添加資料
// 創造student對象
Student s1 = new Student("熊大", 20);
Student s2 = new Student("熊二", 19);
Student s3 = new Student("光頭強", 30);
list.add(s1);
list.add(s2);
list.add(s3);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}
}
}
1.5ArrayList存儲學生對象并周遊更新版【應用】
1.5.1案例需求
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合
學生的姓名和年齡來自于鍵盤錄入
1.5.2代碼實作
第一種:
package demo07.demo03;
import java.util.ArrayList;
import java.util.Scanner;
/*
### 1.5ArrayList存儲學生對象并周遊更新版【應用】
#### 1.5.1案例需求
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合
學生的姓名和年齡來自于鍵盤錄入
*/
public class StudentArrayList01 {
public static void main(String[] args) {
// 建立集合
ArrayList<Student> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("請輸入String姓名");
String name = sc.next();
System.out.println("請輸入int年齡");
int age = sc.nextInt();
// 添加資料
// 創造student對象
Student s = new Student(name, age);
list.add(s);
}
System.out.println("----------------");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}
}
}
第二種 :抽取方法
/*
思路:
1:定義學生類,為了鍵盤錄入資料友善,把學生類中的成員變量都定義為String類型
2:建立集合對象
3:鍵盤錄入學生對象所需要的資料
4:建立學生對象,把鍵盤錄入的資料指派給學生對象的成員變量
5:往集合中添加學生對象
6:周遊集合,采用通用周遊格式實作
*/
public class ArrayListTest {
public static void main(String[] args) {
//建立集合對象
ArrayList<Student> array = new ArrayList<Student>();
//為了提高代碼的複用性,我們用方法來改程序式
addStudent(array);
addStudent(array);
addStudent(array);
//周遊集合,采用通用周遊格式實作
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getName() + "," + s.getAge());
}
}
/*
兩個明确:
傳回值類型:void
參數:ArrayList<Student> array
*/
public static void addStudent(ArrayList<Student> array) {
//鍵盤錄入學生對象所需要的資料
Scanner sc = new Scanner(System.in);
System.out.println("請輸入學生姓名:");
String name = sc.nextLine();
System.out.println("請輸入學生年齡:");
String age = sc.nextLine();
//建立學生對象,把鍵盤錄入的資料指派給學生對象的成員變量
Student s = new Student();
s.setName(name);
s.setAge(age);
//往集合中添加學生對象
array.add(s);
}
}
1.5.3 ArrayList存儲基本資料類型
package com.itheima.demo06ArrayList存儲基本資料類型;
import java.util.ArrayList;
/*
目标:ArrayList存儲基本資料類型
ArrayList隻能存儲引用資料類型.不能存儲基本資料類型.
是就業班的知識點.我們先了解.
Java為每種基本資料類型都搞了一個對應的引用資料類型
基本資料類型 對應的引用資料類型(包裝類)
byte Byte
short Short
int Integer *****
long Long
float Float
double Double
char Character *****
boolean Boolean
我們ArrayList中要儲存基本資料類型,需要寫對應的引用資料類型
小結:
ArrayList不能存儲基本資料類型,隻能存儲引用資料類型.如果要存儲基本資料類型的資料.需要寫包裝類
*/
public class Demo06 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(110); // 0
list.add(119); // 1
list.add(120); // 2
list.add(122); // 3
list.remove(1);
int sum = 0;
// 周遊
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
sum += list.get(i);
}
System.out.println("sum = " + sum);
}
}
擴充練習:
題目1
現有如下字元串元素:[“aaa”, “bbb”, “aaa”, “aaa”, “ccc”, “bbb”],
請将所有的元素按順序存入ArrayList集合中,并周遊集合檢視存儲結果。
package demo07.Demo04;
import java.util.ArrayList;
/*
### 題目1
現有如下字元串元素:["aaa", "bbb", "aaa", "aaa", "ccc", "bbb"],
請将所有的元素按順序存入ArrayList集合中,并周遊集合檢視存儲結果。
*/
public class ArrayListTest02 {
public static void main(String[] args) {
String[] str = {"aaa", "bbb", "aaa", "aaa", "ccc", "bbb"};
// 建立ArrayList集合
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < str.length; i++) {
list.add(str[i]);
}
// 周遊
for (int j = 0; j < list.size(); j++) {
System.out.print(list.get(j) + " ");
}
}
}
題目2:
請定義教師(Teacher)類,屬性包含姓名和專業名稱。将若幹教師對象存入ArrayList集合中,并周遊集合列印教師資訊,格式如下:
姓名:光頭強老師, 專業:javase
姓名:平頭哥老師, 專業:javaee
姓名:熊大老師, 專業:php
姓名:熊二老師, 專業:python
package demo07.Demo04;
import java.util.ArrayList;
/*
### 題目2:
請定義教師(Teacher)類,屬性包含姓名和專業名稱。
将若幹教師對象存入ArrayList集合中,并周遊集合列印教師資訊,格式如下:
姓名:光頭強老師, 專業:javase
姓名:平頭哥老師, 專業:javaee
姓名:熊大老師, 專業:php
姓名:熊二老師, 專業:python
*/
public class ArrayListTest01 {
public static void main(String[] args) {
// 設定ArrayList集合
ArrayList<Teacher> list = new ArrayList<>();
// 添加教師資訊
Teacher t1 = new Teacher("光頭強", "java");
Teacher t2 = new Teacher("平頭哥", "javaEE");
Teacher t3 = new Teacher("熊大", "Python");
Teacher t4 = new Teacher("熊二", "php");
list.add(t1);
list.add(t2);
list.add(t3);
list.add(t4);
// 周遊
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}
}
}