文章目录
- 一、集合概念
- 二、ArrayList
- 1. 构造方法和添加方法
- 2. 常用方法
- 三、案例演示
- 1. 存储字符串并遍历
- 2. 存储学生对象并遍历
- 3. 键盘录入学生对象并遍历
一、集合概念
编程的时候如果要存储多个数据,使用长度固定的数组存储格式,不一定满足我们的需要,更适应不了变化的需求,此时就用到了集合。
集合类的特点:提供一种存储空间可变的存储模型。存储的数据容量可以发生改变。
集合类有很多,目前我们先学习一个:ArrayList。
二、ArrayList
ArrayList 是可调整大小的数组实现, 是一种特殊的数据类型,泛型。
怎么用呢?
在出现 E 的地方我们使用引用数据类型替换即可。
例如,ArrayList<String>,ArrayList<Student>。
1. 构造方法和添加方法
//创建一个空的集合对象
ArrayList<String> array = new ArrayList<>(); //后面ArrayList尖括号里面的数据类型可写可不写,系统会自动推断
//添加元素至集合末尾
array.add("hello");
array.add("world");
array.add("tyut");
System.out.println(array); //[hello, world, tyut]
//添加元素至指定索引处
array.add(1, "java"); //注意索引越界问题
2. 常用方法
array.remove("world");
array.remove(1);
array.set(1, "java");
array.get(0);
array.size();
三、案例演示
1. 存储字符串并遍历
需求:创建一个存储字符串的集合,存储 3 个字符串元素,使用程序实现在控制台遍历该集合。
① 遍历集合,首先要能够获取到集合中的每一个元素,这个通过 get(int index) 方法实现;
② 获取集合的长度,这个通过 size() 方法实现。
package com.zxe;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<>();
array.add("不要");
array.add("迷恋");
array.add("哥");
for (int i = 0; i < array.size(); i++) {
String s = array.get(i);
System.out.println(s);
}
}
}
2. 存储学生对象并遍历
需求:创建一个存储学生对象的集合,存储 3 个学生对象,使用程序实现在控制台遍历该集合。
① 定义学生类;
② 创建集合对象;
③ 创建学生对象;
④ 添加学生对象到集合中;
⑤ 遍历集合,采用通用遍历格式实现。
//学生类
package com.zxe;
public class Student {
private String name;
private int age;
public Student() {}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
//学生测试类
package com.zxe;
import java.util.ArrayList;
public class StudentTest {
public static void main(String[] args) {
ArrayList<Student> array = new ArrayList<>();
Student s1 = new Student("张三", 17);
Student s2 = new Student("李四", 19);
Student s3 = new Student("王五", 13);
array.add(s1);
array.add(s2);
array.add(s3);
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getName() + ", " + s.getAge());
}
}
}
3. 键盘录入学生对象并遍历
与上面不同的是,这里的学生对象需要我们通过键盘输入。
package com.zxe;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentTest {
public static void main(String[] args) {
ArrayList<Student> array = new ArrayList<>();
for (int i = 0; i < 3; i++) {
System.out.println("请输入第" + (i + 1) + "个同学的姓名和年龄:");
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) {
Student student = new Student();
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
int age = sc.nextInt();
student.setName(name);
student.setAge(age);
array.add(student);
}
}
学生类与上面一致,键盘录入多个学生信息,这里为了提高代码的复用性,我们用方法来改进程序。