案例01:遍历删并除元素值

  • 某班级的考试在系统上进行,成绩大致为:98,77,66,89,79,50,100;
  • 现在需要先把成绩低于80分以下的数据去掉。
import java.util.ArrayList;
public class Demo01 {
    public static void main(String[] args) {
        //1.创建一个ArrayList集合存储一个班级学生的成绩:98,77,66,89,79,50,100。
        ArrayList<Integer> scores = new ArrayList<>();
        scores.add(98);
        scores.add(77);
        scores.add(66);
        scores.add(89);
        scores.add(79);
        scores.add(50);
        scores.add(100);
        System.out.println(scores);

        //2.从集合中去掉低于80分的集合
        //注意:在集合中删除一个元素,后面的元素会往前补,所以在这里要避免删除低于80分的元素,后面的元素补上了导致漏掉检查补上来的元素
        //解决避免漏检集合元素方法一:
//        for (int i = 0; i < scores.size(); i++) {
//            int score = scores.get(i);
//            if (score < 80){
//                scores.remove(i);
//                i--;//删除元素后,让索引往后退一步,避免漏检元素
//            }
//        }
//        System.out.println(scores);
        //方法二:从集合最后索引开始往前检查
        for (int i = scores.size()-1; i >= 0 ; i--) {
            int score = scores.get(i);
            if (score < 80){
                scores.remove(i);
            }
        }
        System.out.println(scores);
    }
}

案例02: 存储自定义类型的对象

  • 某电影院系统需要在后台存储以下三部电影,然后依次展示。

电影名称:

电影评分:

电影演员:

《肖申克的救赎》

9.7

罗宾斯

《霸王别姬》

9.6

张国荣,张丰毅

《阿甘正传》

9.3

汤姆.汉斯克

1.定义电影类:

public class Movie {
    private String name;
    private double score;
    private String actor;

    //无参构造器
    public Movie() {
    }

    //有参构造器
    public Movie(String name, double score, String actor) {
        this.name = name;
        this.score = score;
        this.actor = actor;
    }

    //设置getter/setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }
}

2. 实现存储以上三部电影,并展现电影信息:

import java.util.ArrayList;
public class Demo02 {
    public static void main(String[] args) {
        //1.定义电影类

        //2.创建三个电影对象
        Movie m1 = new Movie("《肖申克的救赎》" , 9.7 , "罗宾斯");
        Movie m2 = new Movie("《霸王别姬》" , 9.6 , "张国荣,张丰毅");
        Movie m3 = new Movie("《阿甘正传》" , 9.5 , "汤姆.汉克斯");

        //3.创建一个电影类型的ArrayList集合,存储三部电影对象
        ArrayList<Movie> movies = new ArrayList<>();
        //添加存储到集合中的是地址,如果直接输出集合对象,会打印出的是地址,而不是内容
        movies.add(m1);
        movies.add(m2);
        movies.add(m3);
        System.out.println(movies);//这里会输出三个电影对象m1,m2,m3的地址

        //4.遍历电影类型的集合中的每个电影对象,访问它的信息即可
        for (int i = 0; i < movies.size(); i++) {
            //用一个对象接电影集合对应的地址,再根据相应索引对象的地址访问电影信息
            Movie m = movies.get(i);//对象m是地址
            System.out.println("电影名称:" + m.getName());
            System.out.println("电影评分:" + m.getScore());
            System.out.println("电影演员:" + m.getActor());
            System.out.println("---------------------------------");
        }
    }
}

案例03:元素搜索

  • 后台程序需要存储以下学生信息并展示,然后要提供按照学号搜索学生信息的功能。

学号:

姓名:

年龄:

班级:

21190411

大大

21

护理1班

21190422

小小

22

护理2班

21190433

青青

23

区块链1班

21190444

楚楚

24

区块链2班

 1.定义学生类:

public class Student {
    private String studyNumber;
    private String name;
    private int age;
    private String className;

    //无参构造器
    public Student() {
    }

    //有参构造器
    public Student(String studyNumber, String name, int age, String className) {
        this.studyNumber = studyNumber;
        this.name = name;
        this.age = age;
        this.className = className;
    }

    //设置getter/setter方法
    public String getStudyNumber() {
        return studyNumber;
    }

    public void setStudyNumber(String studyNumber) {
        this.studyNumber = studyNumber;
    }

    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 getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }
}

2.存储学生信息,完成根据学生学号查询学生信息 :

import java.util.ArrayList;
import java.util.Scanner;
public class Demo03 {
    public static void main(String[] args) {
        //1.定义学生类
        //2.创建集合存储学生对象,创建学生对象封装学生信息,把学生对象添加到集合中去
        ArrayList<Student> students = new ArrayList<>();
        students.add(new Student("21190411","大大",21,"护理1班"));
        students.add(new Student("21190422","小小",22,"护理2班"));
        students.add(new Student("21190433","青青",23,"区块链1班"));
        students.add(new Student("21190444","楚楚",24,"区块链2班"));

        //3.遍历集合信息并展示
        System.out.println("学号\t\t\t名字\t\t年龄\t\t班级");
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            System.out.println(s.getStudyNumber() + "\t" + s.getName() + "\t\t" + s.getAge() + "\t\t" + s.getClassName());
        }

        //4.定义方法完成学号的搜索功能
        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.print("请您输入要查询的学生学号:");
            String studentNumber = sc.next();
            //5.调用方法查询
            Student s = getStudentById(students,studentNumber);
            //6.判断s中是否存在学生对象地址
            if (s == null){
                System.out.println("sorry,查无此人。");
            }else {
                System.out.println("您查询的学生信息如下:");
                System.out.println("学号\t\t\t名字\t\t年龄\t\t班级");
                System.out.println(s.getStudyNumber() + "\t" + s.getName() + "\t\t" + s.getAge() + "\t\t" + s.getClassName());

            }

        }

    }

    /**
     *根据学生的学号查询学生对象返回
     * @param students 存储全部学生对象的集合
     * @param studentNumber 搜索的学生的学号
     * @return 学生对象 | null(学生不存在)
     */
    public static Student getStudentById(ArrayList<Student> students,String studentNumber){
        //1.遍历全部学生对象
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);//使用对象s存储学生集合中的学生地址
            //2.判断当前遍历的学号是否是要找的学号
            if (s.getStudyNumber().equals(studentNumber)){
                return s;//相等,代表这个s对象的学生对象就是要找的学生,返回该对象
            }
        }
        return null;//遍历完集合信息都没有找到该信息,即查无此人,返回null
    }
}