集合部分小实验

集合框加小实验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;
    }


}
相关推荐
WaaTong几秒前
Java反射
java·开发语言·反射
Troc_wangpeng2 分钟前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习
努力的家伙是不讨厌的3 分钟前
解析json导出csv或者直接入库
开发语言·python·json
Envyᥫᩣ17 分钟前
C#语言:从入门到精通
开发语言·c#
云空26 分钟前
《Python 与 SQLite:强大的数据库组合》
数据库·python·sqlite
童先生38 分钟前
Go 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go
lulu_gh_yu39 分钟前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
Re.不晚1 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
老秦包你会1 小时前
Qt第三课 ----------容器类控件
开发语言·qt
凤枭香1 小时前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv