You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何将分组排序后的员工Map数据输出为指定格式定长文本

实现方案

你只需要保证分组的嵌套Map有序,再按层级遍历取出员工对象拼接字段,最后写入文件即可,完整实现代码如下:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;

public class SortData {

    public static void main(String[] args) {
        List<Employee> employees = Arrays.asList(
                new Employee("102", "300", "100", "200"),
                new Employee("101", "200", "80", "120"),
                new Employee("102", "100", "50", "50"),
                new Employee("103", "300", "100", "200"),
                new Employee("101", "200", "80", "120"),
                new Employee("101", "100", "50", "50"));

        // 分组时指定TreeMap作为存储结构,自动保证empNo、empSal按自然升序排列
        Map<String, Map<String, List<Employee>>> map = employees.stream()
                .collect(Collectors.groupingBy(
                        Employee::getEmpNo,
                        TreeMap::new, // 外层员工编号有序
                        Collectors.groupingBy(
                                Employee::getEmpSal,
                                TreeMap::new, // 内层员工薪资有序
                                Collectors.toList()
                        )
                ));

        // 输出到控制台同时写入定长文件,替换下面路径为你的实际存储路径
        String outputFilePath = "employee_data.txt";
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath))) {
            for (Map.Entry<String, Map<String, List<Employee>>> empNoEntry : map.entrySet()) {
                for (Map.Entry<String, List<Employee>> empSalEntry : empNoEntry.getValue().entrySet()) {
                    for (Employee emp : empSalEntry.getValue()) {
                        // 四个字段无分隔符拼接
                        String line = emp.getEmpNo() + emp.getEmpSal() + emp.getEmpHra() + emp.getEmpPf();
                        // 控制台打印
                        System.out.println(line);
                        // 写入文件
                        writer.write(line);
                        writer.newLine();
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

class Employee {
    private String empNo;
    private String empSal;
    private String empHra;
    private String empPf;

    public Employee(String empNo, String empSal, String empHra, String empPf) {
        this.empNo = empNo;
        this.empSal = empSal;
        this.empHra = empHra;
        this.empPf = empPf;
    }

    // 补全getter方法
    public String getEmpNo() { return empNo; }
    public String getEmpSal() { return empSal; }
    public String getEmpHra() { return empHra; }
    public String getEmpPf() { return empPf; }
}

运行代码后控制台会输出你预期的格式,同时对应路径会生成符合要求的定长文件。

内容的提问来源于stack exchange,提问作者Codinghubby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:45:03