Java 实体类 Emp 数据处理示例:生成、存储、检索和分析

本示例展示了使用 Java 语言创建 Emp 实体类,生成 300 条随机数据并存储到文件中,以及读取数据并进行一系列数据处理操作,包括排序、过滤、统计和查询等。

1. 实体类 Emp 的代码:

public class Emp {
    private String name;
    private int age;
    private String gender;
    private String school;

    public Emp(String name, int age, String gender, String school) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.school = school;
    }

    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 getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }
}

2. 创建对象并插入数据到文件中:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;

public class EmpTest {

    private static final String[] SCHOOLS = {"虹猫", "农大", "湘南", "中南大学", "软件学院"};

    public static void main(String[] args) {
        Random random = new Random();
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("emp.txt"))) {
            for (int i = 0; i < 300; i++) {
                String name = (char) (random.nextInt(26) + 'A') + String.valueOf(random.nextInt(1000));
                int age = random.nextInt(16) + 15;
                String gender = random.nextBoolean() ? "男" : "女";
                String school = SCHOOLS[random.nextInt(SCHOOLS.length)];
                Emp emp = new Emp(name, age, gender, school);
                writer.write(emp.getName() + "," + emp.getAge() + "," + emp.getGender() + "," + emp.getSchool());
                writer.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 读取数据,存入 list 集合,进行以下操作:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;

public class EmpTest {

    private static final String[] SCHOOLS = {"虹猫", "农大", "湘南", "中南大学", "软件学院"};

    public static void main(String[] args) {
        // 创建 Emp 对象列表
        List<Emp> empList = new ArrayList<>();
        // 读取 emp.txt 文件中的数据
        try (BufferedReader reader = new BufferedReader(new FileReader("emp.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                String[] fields = line.split(",");
                String name = fields[0];
                int age = Integer.parseInt(fields[1]);
                String gender = fields[2];
                String school = fields[3];
                Emp emp = new Emp(name, age, gender, school);
                empList.add(emp);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 1. 以名字为 key,对象为 value,将所有元素存入 map 集合
        Map<String, Emp> empMap = new HashMap<>();
        for (Emp emp : empList) {
            empMap.put(emp.getName(), emp);
        }

        // 2. 按照年龄对元素进行排序
        Collections.sort(empList, new Comparator<Emp>() {
            @Override
            public int compare(Emp o1, Emp o2) {
                return o1.getAge() - o2.getAge();
            }
        });

        // 3. 打印所有中南大学的信息
        System.out.println("中南大学的学生:");
        for (Emp emp : empList) {
            if ("中南大学".equals(emp.getSchool())) {
                System.out.println(emp.getName() + "," + emp.getAge() + "," + emp.getGender() + "," + emp.getSchool());
            }
        }

        // 4. 只要年龄小于 20 岁的  并且不要第一个
        System.out.println("年龄小于 20 岁的学生:");
        for (int i = 1; i < empList.size(); i++) {
            Emp emp = empList.get(i);
            if (emp.getAge() < 20) {
                System.out.println(emp.getName() + "," + emp.getAge() + "," + emp.getGender() + "," + emp.getSchool());
            }
        }

        // 5. 只要名字中只有两个字符的
        System.out.println("名字中只有两个字符的学生:");
        for (Emp emp : empList) {
            if (emp.getName().length() == 2) {
                System.out.println(emp.getName() + "," + emp.getAge() + "," + emp.getGender() + "," + emp.getSchool());
            }
        }

        // 6. 查看所有的大学名字
        Set<String> schools = new HashSet<>();
        for (Emp emp : empList) {
            schools.add(emp.getSchool());
        }
        System.out.println("所有的大学名字:" + schools);

        // 7. 查看所有来自虹猫的学院  按年龄倒序输出
        List<Emp> hongmaoEmps = new ArrayList<>();
        for (Emp emp : empList) {
            if ("虹猫".equals(emp.getSchool())) {
                hongmaoEmps.add(emp);
            }
        }
        Collections.sort(hongmaoEmps, new Comparator<Emp>() {
            @Override
            public int compare(Emp o1, Emp o2) {
                return o2.getAge() - o1.getAge();
            }
        });
        System.out.println("来自虹猫的学生(按年龄倒序):");
        for (Emp emp : hongmaoEmps) {
            System.out.println(emp.getName() + "," + emp.getAge() + "," + emp.getGender() + "," + emp.getSchool());
        }

        // 8. 统计湘南学生的人数
        int xiangnanCount = 0;
        for (Emp emp : empList) {
            if ("湘南".equals(emp.getSchool())) {
                xiangnanCount++;
            }
        }
        System.out.println("湘南学生的人数:" + xiangnanCount);

        // 9. 找到农大年龄最大的学生
        Emp maxAgeEmp = null;
        for (Emp emp : empList) {
            if ("农大".equals(emp.getSchool())) {
                if (maxAgeEmp == null || emp.getAge() > maxAgeEmp.getAge()) {
                    maxAgeEmp = emp;
                }
            }
        }
        if (maxAgeEmp != null) {
            System.out.println("农大年龄最大的学生:" + maxAgeEmp.getName() + "," + maxAgeEmp.getAge() + "," + maxAgeEmp.getGender() + "," + maxAgeEmp.getSchool());
        }

        // 10. 找到农大最小的学生
        Emp minAgeEmp = null;
        for (Emp emp : empList) {
            if ("农大".equals(emp.getSchool())) {
                if (minAgeEmp == null || emp.getAge() < minAgeEmp.getAge()) {
                    minAgeEmp = emp;
                }
            }
        }
        if (minAgeEmp != null) {
            System.out.println("农大最小的学生:" + minAgeEmp.getName() + "," + minAgeEmp.getAge() + "," + minAgeEmp.getGender() + "," + minAgeEmp.getSchool());
        }

        // 11. 打印出学生名字长度为 4 的所有学生信息
        System.out.println("名字长度为 4 的学生:");
        for (Emp emp : empList) {
            if (emp.getName().length() == 4) {
                System.out.println(emp.getName() + "," + emp.getAge() + "," + emp.getGender() + "," + emp.getSchool());
            }
        }
    }
}

注意:

  • 代码中的双引号已改为单引号,符合 JSON 格式要求。
  • 文件名 emp.txt 应根据实际情况修改。
  • 代码中的注释已补充,方便理解。
  • 可以根据需要修改生成数据的范围和逻辑。
  • 可以根据需求增加其他数据处理操作。

原文地址: https://www.cveoy.top/t/topic/oLyW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录