1.ArrayList
集合和数组的区别 :
共同点:都是存储数据的容器
不同点:数组的容量是固定的,集合的容量是可变的
数组实现学生对象的存储:
/*
需求:
将(张三,23),(李四,24)(王五,25)
封装为3个学生对象并存入数组
随后遍历数组,将学生信息输出在控制台
思路:
1.定义学生类准备用于封装数据
2.动态初始化长度为3的数组,类型为Student类型
3.根据需求创建3个学生对象
4.将学生对象存入数组
5.遍历数组,取出每一个学生对象
6.调用对象的getXxx方法获取学生信息,并输出在控制台
*/
import com.summer.domain.Student;
public class TestObjectArray {
public static void main(String[] args) {
// 2.动态初始化长度为3的数组,类型为Student类型
Student[] arr = new Student[3];
//3.根据需求创建3个学生对象
Student s1 = new Student("张三",23);
Student s2 = new Student("李四",24);
Student s3 = new Student("王五",25);
// 4.将学生对象存入数组
arr[0] = s1;
arr[1] = s2;
arr[2] = s3;
//5.遍历数组,取出每一个学生对象
for (int i = 0; i < arr.length; i++) {
// System.out.println(arr[i]);
// com.summer.domain.Student@16b98e56
// com.summer.domain.Student@7ef20235
// com.summer.domain.Student@27d6c5e0
Student temp = arr[i];
System.out.println(temp.getName() + "..." + temp.getAge());
// 张三...23
// 李四...24
// 王五...25
}
}
}
1.1 -ArrayList的构造方法和添加方法
public ArrayList() | 创建一个空的集合对象 |
---|---|
public boolean add(E e) | 将指定的元素追加到此集合的末尾 |
public void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
ArrayList<E> :
可调整大小的数组实现
<E> : 是一种特殊的数据类型,泛型。
怎么用呢 ?
在出现E的地方我们使用引用数据类型替换即可
举例:ArrayList<String>, ArrayList<Student>
import java.util.ArrayList;
public class Demo1ArrayList {
public static void main(String[] args) {
//1.创建集合容器对象
//public ArrayList()创建一个空的集合对象
//集合容器要是没有加<> 就可以存储任意数据类型 <>只能写引用数据类型
//<>泛型:对集合容器存储的数据类型进行限制
ArrayList<String> list = new ArrayList();
//2.调用对象的add方法,向容器中添加数据
// public boolean add(E e)将指定的元素追加到此集合的末尾
list.add("abc");
list.add("222");
list.add("333");
list.add("444");
//public void add(int index,E element)在此集合中的指定位置插入指定的元素
list.add(1,"666");
System.out.println(list);
}
}
1.2ArrayList类常用方法【应用】
成员方法 :
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() | 返回集合中的元素的个数 |
示例代码 :
/*
删除:
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()返回集合中的元素的个数
*/
import java.util.ArrayList;
public class Demo2ArrayList {
public static void main(String[] args) {
//testRemove();
//testSet();
//testGetOrSize();
}
private static void testGetOrSize() {
ArrayList<String> list = new ArrayList<>();
list.add("abc");
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
list.add("666");
//public E get(int index)返回指定索引处的元素
String s1 = list.get(0);
String s2 = list.get(1);
String s3 = list.get(2);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
//public int size()返回集合中的元素的个数
int size = list.size();
System.out.println(size);
}
private static void testSet() {
ArrayList<String> list = new ArrayList<>();
list.add("abc");
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
list.add("666");
//public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
String s = list.set(0, "666");
System.out.println(s);//666
System.out.println(list);//[666, 111, 222, 333, 444, 555, 666]
}
private static void testRemove() {
ArrayList<String> list = new ArrayList<>();
list.add("abc");
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
list.add("666");
//public boolean remove(Object o)删除指定的元素,返回删除是否成功
boolean b1 = list.remove("abc");
boolean b2 = list.remove("zzz");
System.out.println(b1);//true
System.out.println(b2);//false
System.out.println(list);//[111, 222, 333, 444, 555, 666]
// public E remove(int index)删除指定索引处的元素,返回被删除的元素
String s = list.remove(0);
System.out.println(s);//111
System.out.println(list);//[222, 333, 444, 555, 666]
}
}
2.基于集合的几个案例分析
2.1 ArrayList存储字符串并遍历
案例需求 :
创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合
实现步骤 :
1:创建集合对象 2:往集合中添加字符串对象 3:遍历集合,首先要能够获取到集合中的每一个元素,这个通过get(int index)方法实现 4:遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现 5:遍历集合的通用格式
代码实现 :
import java.util.ArrayList;
public class Test1 {
public static void main(String[] args) {
//1.创建集合对象
ArrayList<String> list = new ArrayList<>();
//2.往集合中添加字符串对象
list.add("张三");
list.add("李四");
list.add("王五");
//3.遍历集合
for (int i = 0; i < list.size(); i++) {
//i:每一个索引值
String s = list.get(i);
System.out.println(s);
}
}
}
2.2 ArrayList存储学生对象并遍历
案例需求 :
创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
实现步骤 :
1:定义学生类
2:创建集合对象
3:创建学生对象
4:添加学生对象到集合中
5:遍历集合,采用通用遍历格式实现
代码实现 :
1、定义学生类
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;
}
}
2、测试类
import com.summer.domain.Student;
import java.util.ArrayList;
public class Test2 {
public static void main(String[] args) {
//2:创建集合对象
ArrayList<Student> list = new ArrayList<>();
//3.创建学生对象
Student stu1 = new Student("张三1",23);
Student stu2 = new Student("张三2",23);
Student stu3 = new Student("张三3",23);
//4.添加学生对象到集合中
list.add(stu1);
list.add(stu2);
list.add(stu3);
//5.遍历集合,采用通用便利格式实现
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.getName() + "..." + s.getAge());
}
}
}
2.3 键盘录入学生信息到集合
案例需求 :
创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
学生的姓名和年龄来自于键盘录入
实现步骤 :
1:定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型
2:创建集合对象
3:键盘录入学生对象所需要的数据
4:创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
5:往集合中添加学生对象
6:遍历集合,采用通用遍历格式实现
代码实现 :
1、定义学生类:同上
2、测试类
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());
}
}
/*
两个明确:
返回值类型: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);
}
}