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("你好");
boolean b1
= array
.remove("你好");
System
.out
.println(b1
);
System
.out
.println("------------------");
String re
= array
.remove(0);
System
.out
.println(re
);
System
.out
.println("------------------");
String hi
= array
.set(0, "嗨");
System
.out
.println(hi
);
System
.out
.println("------------------");
String s
= array
.get(0);
System
.out
.println(s
);
System
.out
.println("------------------");
int size
= array
.size();
System
.out
.println(size
);
System
.out
.println("------------------");
boolean b2
= array
.add("Java");
System
.out
.println(b2
);
System
.out
.println("------------------");
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 (int i
= 0; i
< array
.size(); i
++) {
System
.out
.print(array
.get(i
) + " ");
}
System
.out
.println("------");
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
;
public class StudentArrayList {
public static void main(String
[] args
) {
ArrayList
<Student> list
= new ArrayList<>();
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
;
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 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());
}
}
}
第二种 :抽取方法
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());
}
}
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
;
public class ArrayListTest02 {
public static void main(String
[] args
) {
String
[] str
= {"aaa", "bbb", "aaa", "aaa", "ccc", "bbb"};
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
;
public class ArrayListTest01 {
public static void main(String
[] args
) {
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());
}
}
}