java - 在java中查找对象集合中的频率

标签 java list collections

我知道

Collections.frequency(obj1,obj2);  

给出对象 obj2 在集合 obj1 中存在的次数。 但我想问说 obj1 是一个由对象(学生)组成的集合(列表)。

学生可以有 {name,marks}

那么有没有可能的单行或两行方式让我可以找到获得相同分数的学生数量

我不想包含任何额外的库

最佳答案

Collection.Frequency 返回指定集合中等于指定对象的元素数量。它基本上等于 obj2 和 List 对象。

如果您重写 equals 方法并将逻辑设置为基于分数属性,则对象将等于或不等于。然后 Collection.Frequency 返回您想要的结果。

public class Student{
    private String name;
    private int score;
    @Override
    public boolean equals(Object obj){
         if(obj == null)
           return false;
         else if(this==obj)
           return true;
         else 
           return this.hashCode() == ((Student)obj).hashCode();
    }
    @Override
    public int hashCode() {
         return score;
   }
}

...

int freq = Collections.frequency(listOfStudent,student);  

关于java - 在java中查找对象集合中的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15062269/

相关文章:

list - Kotlin:检查列表是否具有特定类型的对象

winforms - 为什么我的列不会在 winforms .NET 数据网格中排序?

java - Google Guava "harder"是否比 Apache Collections 更有用?

Java 定时器 ScheduleAtFixedRate。如何使调用 .cancel 仅在当前迭代完成后停止计时器

java - StreamCorruptedException 仅出现在三个盒子中的两个上?

java - 在 Android 前端显示数组列表

java - 从内部列表 java 8 的对象列表中获取 ID 列表

Java PriorityQueue initElementsFromCollection 方法

java - 如何使用try block 中声明的变量?

java - 为什么ArrayList.toArray方法传递数组参数而不是数组类参数?