如何获取列表中的数字频率

时间:2015-02-28 18:12:43

标签: java collections

我有一个五个数字列表(一手牌)。我希望获得列表中每个数字的频率,并将其放在地图或类似内容中。

我知道自己很容易实现这一点。但我很好奇,有没有办法在Collections框架中这样做?


(要清楚,不是列表中任何特定数字的频率,而是每个数字的频率。)

3 个答案:

答案 0 :(得分:1)

(集合)[http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html]类中有一个名为frequency的方法

使用如下:

int occurrences = Collections.cards(animals, "1");

我很确定这是JDK 1.6 updwards

答案 1 :(得分:1)

使用Guava HashMultiset,它内置了计数:

HashMultiset<String> set = HashMultiset.create(yourList);
int x = set.count("abc");

您还可以迭代并计算所有元素的计数:

for(Multiset.Entry<String> entry : set.entrySet()) { 
    System.out.println(entry.getElement() + " -> " + entry.getCount());
}

答案 2 :(得分:0)

试试这个

List<Integer> list = new ArrayList<Integer>();
    list.add(1);
    list.add(1);
    list.add(1);
    list.add(1);
    list.add(2);
    list.add(4);
    list.add(1);
    Set<Integer> set = new HashSet<Integer>(list);
    for(Integer tmp:set)
    {       
    System.out.println("frequency of element "+ tmp + " : " + Collections.frequency(list, tmp));
    }