集合部分小实验

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


}
相关推荐
阿尔的代码屋2 小时前
[大模型实战 07] 基于 LlamaIndex ReAct 框架手搓全自动博客监控 Agent
人工智能·python
AI探索者20 小时前
LangGraph StateGraph 实战:状态机聊天机器人构建指南
python
AI探索者20 小时前
LangGraph 入门:构建带记忆功能的天气查询 Agent
python
FishCoderh21 小时前
Python自动化办公实战:批量重命名文件,告别手动操作
python
躺平大鹅21 小时前
Python函数入门详解(定义+调用+参数)
python
曲幽1 天前
我用FastAPI接ollama大模型,差点被asyncio整崩溃(附对话窗口实战)
python·fastapi·web·async·httpx·asyncio·ollama
两万五千个小时1 天前
落地实现 Anthropic Multi-Agent Research System
人工智能·python·架构
哈里谢顿1 天前
Python 高并发服务限流终极方案:从原理到生产落地(2026 实战指南)
python
用户8356290780512 天前
无需 Office:Python 批量转换 PPT 为图片
后端·python
markfeng82 天前
Python+Django+H5+MySQL项目搭建
python·django