文章目录
- 一、集合概念
- 二、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);}
}
学生类与上面一致,键盘录入多个学生信息,这里为了提高代码的复用性,我们用方法来改进程序。