集合
1. 概述
- 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
2. 体系结构
ArrayList集合
1. 特点
- 长度可以变化
- 底层是数组实现的
- 存储的元素是可以重复的
2. 创建格式
- ArrayList<要保存元素的数据类型> 对象名 = new ArrayList<要保存元素的数据类型>();
ArrayList<String> users = new ArrayList<>();
泛型的概念:
泛型是一种广泛的数据类型,用于约束集合存储的元素数据类型
例如:
我们想存储字符串类型的数据,就可以这样写:ArrayList<String>
我们想存储学生类型的数据,就可以这样写:ArrayList<Student>
3. 常用方法
① add(E e) 将指定的元素添加到此列表的尾部,返回值为布尔类型;
② add(int index, E element) 将指定的元素插入此列表中的指定位置,没有返回值;
③ remove(int index) 移除此列表中指定位置上的元素, 返回被删除的元素;
④ remove(Object o) 移除此列表中首次出现的指定元素(如果存在),返回值为布尔类型;
⑤: set(int index, E element) 用指定的元素替代此列表中指定位置上的元素, 返回以前位于该指定位置上的元素;
⑥ get(int index) 返回此列表中指定位置上的元素。
⑦ size() 返回此列表中的元素数。
⑧ contains(Object o) 如果此列表中包含指定的元素,则返回 true。
⑨ addAll(Collection<? extends E> c) 按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。
4. 集合与数组的区别
- 数组的长度是固定的,而集合的长度是可变的;
- 数组可以直接保存基本数据类型的数据,而集合不能直接保存基本数据类型的数据;(如果想保存基本数据类型的数据,需要使用对应的包装类型);
5. ArrayList集合的练习
- ArrayList集合存储学生对象并遍历;
public class myArrayList {
public static void main(String[] args) {
// 创建集合对象
ArrayList<Student> students = new ArrayList<>();
// 创建键盘录入对象
Scanner sc = new Scanner(System.in);
// 循环录入学生信息
for (int i = 0; i < 3; i++) {
// 键盘录入学生信息
System.out.println("请输入第"+(i+1)+"个学生的id");
int id = sc.nextInt();
System.out.println("请输入第"+(i+1)+"个学生的姓名");
String name = sc.next();
System.out.println("请输入第"+(i+1)+"个学生的年龄");
int age = sc.nextInt();
// 创建学生对象
Student s = new Student(id, name, age);
// 把学生对象添加到集合中
students.add(s);
}
// 循环遍历集合对象
System.out.print("id\t");
System.out.print("name\t");
System.out.println("age");
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
System.out.print(s.getId() + "\t");
System.out.print(s.getName() + "\t");
System.out.println(s.getAge());
}
}
}
// 创建学生类
class Student {
// 成员变量
private int id;
private String name;
private int age;
// 构造方法
public Student() {
}
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
// getter and setter
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
}
运行结果为: