Java 实体类 Emp 数据处理示例:生成、存储、检索和分析
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 著作权归作者所有。请勿转载和采集!