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

如何更改我的语句以打印hashmap中对象成员类型的频率?

娄丁雨
2023-03-14

我创建了一个包含各种属性的student对象的arrayList。在这些属性中有最喜欢的颜色。因此,在这个由n个学生组成的arraylist中,每个学生都有一个字符串favoriteColor成员变量

Set<student> studentUnique = new HashSet<student>(studentList);
for (user key : studentUnique) {
    System.out.println(key + ": " + Collections.frequency(studentList, key));
}

我想计算所述颜色的频率,例如,100名学生,可能会输出:

red: 50
blue: 20
green: 30

我把我的学生列表(studentList)放到一个hashmap中,但我不知道如何编写频率语句来获得喜欢各自颜色的学生的频率。

共有2个答案

微生嘉
2023-03-14

基本上,你所做的就是根据你喜欢的颜色进行分组。

以下是另一种方法:

 Map<String, Integer> result = 
         studentList.stream()
                    .collect(toMap(Student::getFavouriteColor, s -> 1, Math::addExact));

这使用toMap采集器,其中keyMapperStudent::getfavoriteColor,即一个提取学生最喜欢的颜色作为映射键的函数。

其次,我们放置valueMapper函数s-

最后,我们提供了一个“merge”函数Math::addExact,该函数用于在给定基于最喜爱颜色的关键点冲突时添加两个对应值。

因此,我们将从String---

此外,如果要根据出现的情况按升序打印此结果,可以按如下方式对结果进行排序和打印:

studentList.stream()
           .collect(toMap(Student::getFavouriteColor, s -> 1, Math::addExact))
           .entrySet()
           .stream()
           .sorted(Map.Entry.comparingByValue())
           .forEachOrdered(e -> System.out.println(e.getKey() + ":" + e.getValue())); 

所需进口:

import java.util.stream.*;
import static java.util.stream.Collectors.*;

岳和泽
2023-03-14
studentUnique.stream()
             .collect(Collectors.groupingBy(
                  Student::getColor, 
                  Collectors.counting()))

假设存在getColor

 类似资料:
  • 下面的班级是我的主要班级。我的arraylist是“Employee”类型,并且该arraylist包含多个对象的许多元素(多态性)。所以我想知道,当用户输入一个类名时,我应该从ArrayList中打印出那个特定类的employees。例如,当用户输入“Surgeon”时,程序应该能够从ArrayList中打印出所有Surgeon雇员的。请帮忙,提前谢谢。

  • 我正在做一个项目,我有一个文件,程序可以访问该文件以获取不同年份的不同犯罪信息。然后它需要根据类型添加犯罪并将其放入文件中。我有第一部分,它确实访问了文件并按类型添加了犯罪金额,但当我打开创建的文件时,它没有正确打印出来,我似乎找不到问题所在。 这是打印在文件上的内容: ísr爪哇。util。HashMapÚÁÃ`F loadFactorI thresholdxp?@全爪哇暴力犯罪。lang.In

  • 问题内容: 如何遍历JavaScript对象中的所有成员,包括对象值。 例如,如何循环浏览(分别访问“ your_name”和“ your_message”)? 问题答案:

  • 我正在使用一个可以进行温度转换的程序,并且已经有了代码,但现在我必须制作一个测试代码的程序。对于我需要帮助的部分,我从这样的构造函数开始: 然后我制定了一种方法,从摄氏度或华氏度中获取温度,如下所示: 最后,我在测试编码中写道: 我的问题是,当我运行这个程序时,温度没有显示出来,当我输入此代码的输出时,它返回原始温度(52华氏度)。我如何让它显示我需要的温度(11.1摄氏度)?另外,请注意,我刚刚

  • 我正在寻找为json对象中的所有字段打印jsonpath的Java API。需求的第一部分是,对于给定的json对象(或字符串)- 它应该以key-value的方式打印所有属性,其中key是字段的jsonpath。 输出应该如下所示- 等等。这将用于匹配来自另一个json对象的值(我的第二个需求)。 我找到了一个APIhttps://github.com/json-path/JsonPath,它有