java - 按值对 HashMap 进行排序,该值是具有多个变量的类的实例

标签 java

这是我的第一篇文章,我才刚刚开始学习 Java,所以请耐心等待。

我有一个 HashMap,它存储一个键和一个类的实例作为相应的值(来 self 称为 Main 的类)。该对象有两个变量。我想做的是根据特定的对象变量打印输出,在本例中是按年份打印。这是我的代码:

public class Main {

    private String name;
    private int year;

    public Main(String name, int year) {
        this.name = name;
        this.year = year;
    }

protected static Map<Integer, Main> input = new LinkedHashMap<Integer, Main>();

input.put(1, new Main("Chris", 1980);
input.put(2, new Main("Daphne", 1981);
input.put(3, new Main("Sandra", 1976);
input.put(4, new Main("Adele", 1980);

所以现在我想做的就是按年份列出每个人。所以我的预期输出将如下所示:

1976: Sandra
1980: Chris, Adele
1981: Daphne

非常感谢

最佳答案

一种方法是使用流,例如:

Map<Integer,List<Main>> mainByYear = input.values().stream().collect(Collectors.groupingBy
    (e -> e.year));

然后您可以迭代 mainByYear 映射以打印出键以及关联的列表成员。

关于java - 按值对 HashMap 进行排序,该值是具有多个变量的类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43334377/

相关文章:

java - 是否可以在循环中的每个方法之后检查条件?如果是这样,如何?

java maven exec-maven-plugin 没有在 mvn clean install 上执行

java - 我不断收到错误消息,但我不知道为什么?

java - 如何使用<h :commandButton action ="#{method here}"/>?

Java程序帮助

java - 使用 apache.math3.stat.descriptive 的百分位数计算不匹配

java - 基于运行时对象类型执行方法/代码

java - Cloud Endpoints 自定义域解决方法

java - Hibernate 的复合键

java - 尝试获取 EJB 时出现 JBoss 4.2.3 NullPointerException