Java 实体类创建与数据操作:生成 300 条员工信息并进行分析
- Emp.java
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 int getAge() {
return age;
}
public String getGender() {
return gender;
}
public String getSchool() {
return school;
}
}
- Main.java
import java.io.*;
import java.util.*;
public class Main {
private static final String[] SCHOOLS = {"虹猫", "农大", "湘南", "中南大学", "软件学院"};
public static void main(String[] args) throws IOException {
List<Emp> empList = new ArrayList<>();
Map<String, Emp> empMap = new HashMap<>();
// 创建300条数据
for (int i = 0; i < 300; i++) {
String name = generateName();
int age = generateAge();
String gender = generateGender();
String school = generateSchool();
Emp emp = new Emp(name, age, gender, school);
empList.add(emp);
empMap.put(name, emp);
}
// 写入文件
try (PrintWriter writer = new PrintWriter(new FileWriter("emp.txt"))) {
for (Emp emp : empList) {
writer.println(emp.getName() + "," + emp.getAge() + "," + emp.getGender() + "," + emp.getSchool());
}
}
// 读取文件
try (BufferedReader reader = new BufferedReader(new FileReader("emp.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
Emp emp = new Emp(parts[0], Integer.parseInt(parts[1]), parts[2], parts[3]);
empList.add(emp);
empMap.put(emp.getName(), emp);
}
}
// 按年龄排序
Collections.sort(empList, Comparator.comparingInt(Emp::getAge));
// 中南大学信息
System.out.println("中南大学信息:");
empList.stream()
.filter(emp -> emp.getSchool().equals("中南大学"))
.forEach(emp -> System.out.println(emp.getName() + " " + emp.getAge() + " " + emp.getGender() + " " + emp.getSchool()));
System.out.println();
// 年龄小于20岁的(不要第一个)
System.out.println("年龄小于20岁的(不要第一个):");
empList.stream()
.filter(emp -> emp.getAge() < 20)
.skip(1)
.forEach(emp -> System.out.println(emp.getName() + " " + emp.getAge() + " " + emp.getGender() + " " + emp.getSchool()));
System.out.println();
// 名字中只有两个字符的
System.out.println("名字中只有两个字符的:");
empList.stream()
.filter(emp -> emp.getName().length() == 2)
.forEach(emp -> System.out.println(emp.getName() + " " + emp.getAge() + " " + emp.getGender() + " " + emp.getSchool()));
System.out.println();
// 所有的大学名字
System.out.println("所有的大学名字:");
Set<String> schools = empList.stream()
.map(Emp::getSchool)
.collect(Collectors.toSet());
System.out.println(schools);
System.out.println();
// 来自虹猫的学院(按年龄倒序)
System.out.println("来自虹猫的学院(按年龄倒序):");
empList.stream()
.filter(emp -> emp.getSchool().equals("虹猫"))
.sorted(Comparator.comparingInt(Emp::getAge).reversed())
.forEach(emp -> System.out.println(emp.getName() + " " + emp.getAge() + " " + emp.getGender() + " " + emp.getSchool()));
System.out.println();
// 湘南学生的人数
long count = empList.stream()
.filter(emp -> emp.getSchool().equals("湘南"))
.count();
System.out.println("湘南学生的人数:" + count);
System.out.println();
// 农大年龄最大的学生
Optional<Emp> maxAgeEmp = empList.stream()
.filter(emp -> emp.getSchool().equals("农大"))
.max(Comparator.comparingInt(Emp::getAge));
System.out.println("农大年龄最大的学生:" + maxAgeEmp.orElse(null));
System.out.println();
// 农大最小的学生
Optional<Emp> minAgeEmp = empList.stream()
.filter(emp -> emp.getSchool().equals("农大"))
.min(Comparator.comparingInt(Emp::getAge));
System.out.println("农大最小的学生:" + minAgeEmp.orElse(null));
System.out.println();
// 学生名字长度为4的所有学生信息
System.out.println("学生名字长度为4的所有学生信息:");
empList.stream()
.filter(emp -> emp.getName().length() == 4)
.forEach(emp -> System.out.println(emp.getName() + " " + emp.getAge() + " " + emp.getGender() + " " + emp.getSchool()));
System.out.println();
}
private static String generateName() {
Random random = new Random();
char c = (char) (random.nextInt(26) + 'A');
int num = random.nextInt(1000);
return c + String.format("%04d", num);
}
private static int generateAge() {
Random random = new Random();
return random.nextInt(16) + 15;
}
private static String generateGender() {
Random random = new Random();
return random.nextBoolean() ? "男" : "女";
}
private static String generateSchool() {
Random random = new Random();
return SCHOOLS[random.nextInt(SCHOOLS.length)];
}
}
原文地址: https://www.cveoy.top/t/topic/oLzv 著作权归作者所有。请勿转载和采集!