十三、集合基础
1、集合基础
1.1 集合概述
编程的时候如果要存储多个数鋸,使用长度固定的数组存储格式,不一定满足我们的需求,更话应不了变化的需求,那么,此时就需要用到集合。
集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
ArrayList:
可调整大小的数组实现
:是一种特殊的数据类型,泛型
在出现E的地方我们使用引用数据类型替换即可
举例: ArrayList, ArrayList
1.2 ArrayList构造方法和添加方法
构造方法:
- public ArrayList():创建一个空的集合对象
添加方法:
- public boolean add(E e):将指定的元素追加到此集合的未尾
- public void add(int index,E element):在此集合中的指定位置插入指定的元素
package ArrayList;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// public ArrayList():创建一个空的集合对象
// ArrayList<String> array=new ArrayList<>();
ArrayList<String> array = new ArrayList<String>();
// public boolean add(E e):将指定的元素追加到此集合的未尾
// System.out.println(array.add("hello"));
array.add("hello");
array.add("world");
array.add("java");
// public void add(int index, E element):在此集合中的指定位置插入指定的元素
array.add(1, "javase");
array.add(3, "javaee");
// IndexOutOfBoundsException
// array.add(6,"javaee");
// 输出集合
System.out.println("array:" + array);
}
}
array:[hello, javase, world, javaee, java]
1.3 ArrayList集合常用方法
- 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():返回集合中的元素的个数
2、集合案例
2.1 存储字符串并遍历
需求:创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合
思路:
①创建集合对象
②往集合中添加字符串对象
③遍历集合,首先要能够获取到集合中的每一个元素,这个通过 get(int index)方法实现
④遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现
⑤遍历集合的通用格式
package ArrayList;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// 创建集合
ArrayList<String> array = new ArrayList<String>();
// 向集合中添加字符串对象
array.add("hello");
array.add("world");
array.add("java");
// 遍历集合,首先要能够获取到集合中的每一个元素,这个通过 get(int index)方法实现
System.out.println(array.get(0));
System.out.println(array.get(1));
System.out.println(array.get(2));
// 遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现
System.out.println(array.size());
// 遍历集合的通用格式
for (int i = 0; i < array.size(); i++) {
String s = array.get(i);
System.out.println(s);
}
}
}
2.2 存储学生对象并遍历
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
思路:
①定义学生类
②创建集合对象
③创建学生对象
④添加学生对象到集合中
⑤遍历集合,采用通用遍历格式实现
学生类:Student.java
package ArrayList;
/*
学生类
*/
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;
}
}
package ArrayList;
import java.util.ArrayList;
import java.util.concurrent.ScheduledThreadPoolExecutor;
public class ArrayListDemo {
public static void main(String[] args) {
// 创建集合
ArrayList<Student> array = new ArrayList<Student>();
// 创建学生对象
Student s1 = new Student("111", 18);
Student s2 = new Student("222", 28);
Student s3 = new Student("333", 38);
// 添加学生对象到集合中
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("name:" + s.getName() + ",age:" + s.getAge());
}
}
}
2.3 存储学生对象并遍历升级版
需求:学生的姓名和对象都来自于键盘输入
学生类:Student.java
package ArrayList;
/*
学生类
*/
public class Student {
private String name;
private String age;
public Student(){}
public Student(String name,String age){
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
package ArrayList;
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayListDemo {
public static void main(String[] args) {
// 创建集合
ArrayList<Student> array = new ArrayList<Student>();
/*
// 键盘录入学生信息
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);
*/
// 为了提高代码的复用性并且是程序更加简洁,用方法来改进程序
// 调用方法
addStudent(array);
addStudent(array);
addStudent(array);
// 遍历集合
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println("name:" + s.getName() + ",age:" + 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);
}
}