Arraylist
集合概述
1、集合的特点
-
集合的大小不固定,开启集合后可以动态变化,类型也可以选择不固定(建议固定:Arraylist)
-
集合元素个数不固定,适合进行增删改查的业务场景
-
集合的API丰富好用,数组功能单一
Arraylist集合入门
1、Arraylist集合
- Arraylist是集合的一种,并支持索引
2、Arraylist集合的对象创建方式:
3、Arraylist集合添加元素的方式:
ArrayList list=new ArrayList<>();
list.add("Java");
list.add("Java1");
list.add("Java2");
list.add("Java3");
Arraylist对泛型的支持
1、泛型概述:
- Arraylist是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型
- Arraylist只能操作字符串类型的元素
- Arraylist只能操作整数类型的元素
- 泛型只能支持引用数据类型,不支持基本数据类型(Arraylist是无效的,必须采用Arraylist进行对于整数型Integer的引用)
Arraylist常用API
1、Arraylist集合常用方法:
public class ArraylistAPI {
public static void main(String[] args) {
ArrayList list=new ArrayList<>();
list.add("Java");
list.add("Java1");
list.add("Java2");
list.add("Java3");
//获取index位置元素值;
System.out.println(list.get(0));
//获取集合大小
System.out.println(list.size());
//集合元素便利
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//删除index位置索引,并返回删除的元素
System.out.println(list);
System.out.println(list.remove(0));
System.out.println(list);
list.add(0,"Java");
//根据给出的元素值删除相应元素,并返回删除的元素
list.remove("Java");//只删除从头到尾的第一个相应元素
System.out.println(list);
list.add(0,"Java");
//修改index位置的元素值,并返回被修改的元素
System.out.println(list.set(0, "Java1"));
System.out.println(list);
}
Arraylist集合案例
1、遍历删除元素
- 从集合末尾遍历删除元素,可以避免漏掉元素
public class ArraylistAPI2 {
public static void main(String[] args) {
//遍历并删除集合元素
ArrayList<Integer> list=new ArrayList<>();
ArrayList<Integer> list1=new ArrayList<>();
list.add(98);
list.add(77);
list.add(66);
list.add(89);
list.add(79);
list.add(50);
list.add(100);
list1.add(98);
list1.add(77);
list1.add(66);
list1.add(89);
list1.add(79);
list1.add(50);
list1.add(100);
System.out.println(list);
//遍历删除方法1
for (int i = 0; i < list.size(); i++) {
if(list.get(i)<80){
list.remove(i);
i--;
}
}
System.out.println(list);
//遍历删除方法2
System.out.println(list1);
for (int i = list1.size() - 1; i >= 0; i--) {
if(list1.get(i)<80){
list1.remove(i);
}
}
System.out.println(list1);
}
}
2、学生信息系统的数据搜索
public class ArraylistSearch {
public static void main(String[] args) {
//生成学生集合
ArrayList<Student> students=new ArrayList<>();
//添加学生信息
students.add(new Student("2018302","叶孤城",23,"护理1班"));
students.add(new Student("2018303","叶孤城1",23,"护理2班"));
students.add(new Student("2018304","叶孤城2",23,"护理3班"));
students.add(new Student("2018305","叶孤城3",23,"护理4班"));
//遍历学生信息展示
for (int i = 0; i < students.size(); i++) {
Student stu=students.get(i);
System.out.println(stu.getNumber()+"\t"+stu.getName()+"\t"+stu.getAge()+"\t"+stu.getClasss());
}
//死循环输入查询学号
Scanner scanner=new Scanner(System.in);
String number1;
while (true){
System.out.println("请输入想要搜索的学生对象的学号:");
number1=scanner.next();
Student IDstudent=getStudentById(students,number1);
if(IDstudent!=null){
System.out.println("学生信息为:"+IDstudent.getNumber()+IDstudent.getName()+IDstudent.getClasss()+IDstudent.getAge());
}
else {
System.out.println("未查询到相关学生信息!");
}
}
}
//定义方法完成按照学号搜索功能
/**
* 根据学生序号查询学生对象返回
* @param studentArrayList 存储全部学生对象的集合
* @param Number 搜索学生的学号
* @return 返回学生对象或者Null
*/
public static Student getStudentById(ArrayList<Student> studentArrayList,String Number){
//1、遍历学生集合
for (int i = 0; i < studentArrayList.size(); i++) {
//检查是否是相关学号的学生
Student stu=studentArrayList.get(i);
if(stu.getNumber().equals(Number)){
return stu;
}
}
return null;
}
}
public class Student {
private String number;
private String name;
private int age;
private String classs;
//getter setter
//constructor
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
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;
}
public String getClasss() {
return classs;
}
public void setClasss(String classs) {
this.classs = classs;
}
public Student(String number, String name, int age, String classs) {
this.number = number;
this.name = name;
this.age = age;
this.classs = classs;
}
public Student() {
}
}