当前位置: 首页 > 知识库问答 >
问题:

需要在java中打印如下格式的排序地图值

伍成仁
2023-03-14
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"));

        
        Map<String, Map<String, List<Employee>>> map = employees.stream()
                  .collect(Collectors.groupingBy(Employee::getEmpNo, 
    Collectors.groupingBy(Employee::getEmpSal)));
        
        System.out.println(map);
    }

}



class Employee {

    private String empNo;
    private String empSal;
    private String empHra;
    private String empPf;

    // getter
    // setter

  }
{101={100=[Employee(empNo=101, empSal=100, empHra=50, empPf=50)], 200=[Employee(empNo=101, 
  empSal=200, empHra=80, empPf=120), Employee(empNo=101, empSal=200, empHra=80, empPf=120)]}, 
  102={100=[Employee(empNo=102, empSal=100, empHra=50, empPf=50)], 300=[Employee(empNo=102, 
  empSal=300, empHra=100, empPf=200)]}, 
  103={300=[Employee(empNo=103, empSal=300, empHra=100, empPf=200)]}}
1011005050
10120080120
10120080120
1021005050
102300100200
103300100200

有人能帮帮我吗。

共有1个答案

魏臻
2023-03-14

首先,当前实现中的映射没有排序。

其次,对地图进行排序可能是多余的。似乎为了打印输入数据,只需要按empnoempsal对输入列表进行排序:

Comparator<Employee> sortByNoAndSal = Comparator
        .comparing(Employee::getEmpNo)
        .thenComparing(Employee::getEmpSal);

employees.sort(sortByNoAndSal);

最后,要打印/输出Employee的实例,应该实现特定方法(通过重写Employee::ToString或创建特定方法)。另外,需要注意的输出似乎缺少employee字段之间的分隔符。

// class PrintData
public static void printEmployee(Employee emp) {
    String delimiter = ""; // fix if necessary
    System.out.println(String.join(delimiter, emp.getNo(), emp.getSal(), emp.getHra(), emp.getPf()));
}

// invoke this method
employees.forEach(PrintData::printEmployee);
 类似资料:
  • 问题内容: 我想用Java制作图像,然后在尺寸为150 x 100毫米的标签上的300dpi标签打印机上打印。如何制作图像,以便将线条(或任何种类的元素)准确地打印在位置(10,10)(以毫米为单位),并在位置(10,50)处结束? 换句话说:我的挑战不是如何制作一条线(我使用的是Graphics2D,bufferedImage),而是如何准确地知道该行在标签上的位置(以毫米为单位)。 有任何想法

  • 我正在寻找一种漂亮的方法来打印地图。 <代码>贴图。toString()给我:

  • 有了上面的地图值列表,我需要在一个伸展过程中根据date1和date2进行排序,从而得到下面的输出… 对于上述输入数据,我要求的O/P顺序是:

  • 问题内容: 我正在寻找一种漂亮地打印的好方法。 给我: 我希望地图输入值具有更大的自由度,并且正在寻找更多类似这样的东西: 我写了这段代码: 但是我敢肯定,有一种更优雅,更简洁的方法可以做到这一点。 问题答案: 或将您的逻辑放在一个整洁的小班上。 用法: 注意:您也可以将该逻辑放入实用程序方法中。

  • 问题内容: 我正在为我的GCSE学习,其中一部分要求我打印按字母顺序排序的字典,并且打印内容应包含相关值。 我花了数小时试图找到答案,并浏览了该论坛上的各种帖子,但对于我的有限知识而言,大多数帖子太过复杂。 我可以打印按字母顺序排序的键,也可以打印排序后的值,但不能打印按字母顺序排序的键(附带值)。 这是我的简单测试代码 我需要打印带有值的排序键-怎么做? 问题答案:

  • 本文向大家介绍打印出杨辉三角形(要求打印出10行如下图)。相关面试题,主要包含被问及打印出杨辉三角形(要求打印出10行如下图)。时的应答技巧和注意事项,需要的朋友参考一下 【参考答案】