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

计数具有相同值的对象的频率数

淳于健
2023-03-14
ArrayList<Observer> arrlist = new ArrayList<Observer>();
    public class  Observer{
    private String name;
}

共有1个答案

印曜灿
2023-03-14

您基本上需要迭代观察器,并计算每个键的发生次数(可以是单个属性,也可以是组合,这取决于您的需要)。

observer.name为例,您可以执行以下操作:

Map<String, List<Observer>> observersByName = 
       arrlist.stream().collect(Collectors.groupingBy(Observer::getName));

然后迭代条目集,并在值列表上调用size()以获得频率。

Map<String, Long> nameFrequency = arrlist.stream().collect(
                                     Collectors.groupingBy(Observer::getName,
                                                           Collectors.counting()));
Map<String, Integer> nameFrequency = new HashMap<>();
for( Observer obs : arrlist ) {
   //use the name as the key, associate a value of 1 with each key
   //if an entry already existed merge existing and new value by summing them
   frequency.merge( obs.getName(), 1, Integer::sum);
}
 类似资料:
  • 问题内容: 一个人如何处理一个javascript对象数组,例如: 并通过将值相加来合并重复的键。为了得到这样的东西: 我尝试迭代并添加到新数组,但这没有用: 问题答案: 您应该使用属性将未找到的每个对象分配给结果。 如果找到它,则需要添加它。 另外,部分问题是您正在重用变量来引用的值,因此您失去了对该对象的引用。

  • 问题内容: 一个人如何处理一个javascript对象数组,例如: 并通过将值相加来合并重复的键。为了得到这样的东西: 我尝试迭代并添加到新数组,但这没有用: 问题答案: 您应该使用属性将未找到的每个对象分配给结果。 如果找到它,则需要添加它。 另外,部分问题是您正在重用变量来引用的值,因此您失去了对该对象的引用。

  • 我有一个对象数组,希望删除所有具有特定键值的对象。 该数组如下所示:

  • 以前我没有得到任何错误,但突然我开始得到错误:

  • 问题内容: 我想在数组中的每个索引处创建一个大小相同的数组。用Java做到这一点的最佳方法是什么? 例如,如果为5且值为boolean ,则数组应为: 问题答案: 您可以尝试以下方法: 手动数组填充的第二种方法:

  • 问题内容: 我正在练习继承。 我有两个相似的类,我想将其同化为一个数组,因此我想将Object类用作超类,因为所有内容都是Object的子类。 因此,例如,我将T类和CT类放入一个名为all的数组中,如下所示: 我跳过了声明,因为那不是我的问题。 当我希望使用循环在数组内调用函数时,我真正的问题就变成了: T和CT分别涉及的类都具有beingShot方法,该方法是公共的。 Eclipse建议将它们