集合部分小实验

集合框加小实验Demo

写一个 Java 程序,主要功能是创建一个包含学生信息的列表,并根据学生的数学成绩、年龄和出生日期进行筛选和输出。下面是对代码的分析:

  1. 创建学生列表:

    代码首先创建了一个 ArrayList 对象 studentList,用于存储 Student 对象的列表。然后使用 SimpleDateFormat 对象 sdf 解析日期字符串,并向 studentList 中添加了若干个 Student 对象,每个对象代表一个学生的信息。

  2. 筛选学生信息:

    接下来创建了三个空的 ArrayList 对象 studentListMath、studentListAge 和 studentListBirth,用于存储符合条件的学生信息。然后使用循环遍历 studentList 中的每个学生对象,根据数学成绩、年龄和出生日期进行筛选,并将符合条件的学生信息分别存储到对应的列表中。

  3. 输出筛选结果:

    最后,循环遍历输出了符合条件的学生信息。分别输出数学成绩大于80的学生、年龄大于18的学生以及出生日期在2000-05-20后的学生的信息。

    分析:
    对于数学成绩的筛选,可以使用了 BigDecimal 类的 compareTo 方法进行比较。
    对于年龄和出生日期的筛选,可以使用了普通的比较操作符(>、after)进行判断。

代码实现

java 复制代码
package Collection.Work1.Test1;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

package Collection.Work1.Test1;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class Demo2 {
    public static void main(String[] args) throws ParseException {
        List<Student> studentList = new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        studentList.add(new Student("aa0", 22, sdf.parse("2023-11-11"), new BigDecimal(98), new BigDecimal(97), new BigDecimal(96)));
        studentList.add(new Student("aa1", 32, sdf.parse("2003-11-11"), new BigDecimal(88), new BigDecimal(87), new BigDecimal(86)));
        studentList.add(new Student("aa2", 12, sdf.parse("2013-11-11"), new BigDecimal(70), new BigDecimal(77), new BigDecimal(76)));
        studentList.add(new Student("aa3", 42, sdf.parse("2023-10-11"), new BigDecimal(60), new BigDecimal(67), new BigDecimal(66)));
        studentList.add(new Student("aa4", 12, sdf.parse("1963-12-11"), new BigDecimal(50), new BigDecimal(57), new BigDecimal(56)));
        studentList.add(new Student("aa5", 12, sdf.parse("1973-01-11"), new BigDecimal(40), new BigDecimal(47), new BigDecimal(46)));
        studentList.add(new Student("aa6", 12, sdf.parse("1693-11-11"), new BigDecimal(30), new BigDecimal(37), new BigDecimal(36)));
        studentList.add(new Student("aa7", 12, sdf.parse("1977-10-11"), new BigDecimal(28), new BigDecimal(27), new BigDecimal(26)));
        studentList.add(new Student("aa8", 82, sdf.parse("2000-10-11"), new BigDecimal(99), new BigDecimal(27), new BigDecimal(26)));

        List<Student> studentListMath = new ArrayList<>();
        List<Student> studentListAge = new ArrayList<>();
        List<Student> studentListBirth = new ArrayList<>();

        BigDecimal math80 = new BigDecimal(80);
        Date date2000 = sdf.parse("2000-05-20");
        for (Student student : studentList) {
            BigDecimal math1 = student.getMath();
            //找出大于80分的student

            if (math1.compareTo(math80) > 0) {  //大于0 第一个比第二大
                studentListMath.add(student);
            }
            //找出年龄大于18的student
            if (student.getAge() > 18) {
                studentListAge.add(student);
            }
            //找出出生年月大于2000-05-20的student
            if (student.getBirth().after(date2000)) { //after 之后,before之前
                studentListBirth.add(student);
            }
        }

        System.out.print("数学成绩大于80的人有: " + studentListMath.size() + "位,分别是:");
        for (Student student : studentListMath) {
            System.out.print(student.getName() + "成绩为:" + student.getMath() + "  ");
        }
        System.out.println();
        System.out.print("年龄大于18的人有: " + studentListAge.size() + "位,分别是:");
        for (Student student : studentListAge) {
            System.out.print(student.getName() + "年龄为:" + student.getAge() + "  ");
        }
        System.out.println();
        System.out.print("出生年纪在2000-05-20后的人有: " + studentListBirth.size() + "位,分别是:");
        for (Student student : studentListBirth) {
            System.out.print(student.getName() + "出生时间为:" + sdf.format(student.getBirth()) + "  ");
        }


    }
}
  • Student类
java 复制代码
- package Collection.Work1.Test1;

import java.math.BigDecimal;
import java.util.Date;

public class Student {
    private String name;
    private Integer age;
    private Date birth;
    private BigDecimal math;
    private BigDecimal chinese;
    private BigDecimal englisth;

    public Student() {
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public BigDecimal getMath() {
        return math;
    }

    public void setMath(BigDecimal math) {
        this.math = math;
    }

    public BigDecimal getChinese() {
        return chinese;
    }

    public void setChinese(BigDecimal chinese) {
        this.chinese = chinese;
    }

    public BigDecimal getEnglisth() {
        return englisth;
    }

    public void setEnglisth(BigDecimal englisth) {
        this.englisth = englisth;
    }

    public Student(String name, Integer age, Date birth, BigDecimal math, BigDecimal chinese, BigDecimal englisth) {
        this.name = name;
        this.age = age;
        this.birth = birth;
        this.math = math;
        this.chinese = chinese;
        this.englisth = englisth;
    }


}
相关推荐
数据智能老司机14 分钟前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机1 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机1 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机1 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i1 小时前
drf初步梳理
python·django
每日AI新事件1 小时前
python的异步函数
python
这里有鱼汤3 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook12 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室12 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三14 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试