Java 计算列表中的元素出现的次数

Java 计算列表中的元素出现的次数

假设我们在ArrayList中拥有一个元素,我们可以通过多种方式来计算元素的出现次数。

HashMap

这种数据结构使用散列函数来映射类似的值,称为键到它们的相关值。地图值可以使用键来检索,因为它包含键值对。

// Java program to count frequencies of elements
// using HashMap.
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.*;
 
class GFG {
    public static void countFrequencies(ArrayList<String> list)
    {
        // hashmap to store the frequency of element
        Map<String, Integer> hm = new HashMap<String, Integer>();
 
        for (String i : list) {
            Integer j = hm.get(i);
            hm.put(i, (j == null) ? 1 : j + 1);
        }
 
        // displaying the occurrence of elements in the arraylist
        for (Map.Entry<String, Integer> val : hm.entrySet()) {
            System.out.println("Element " + val.getKey() + " "
                               + "occurs"
                               + ": " + val.getValue() + " times");
        }
    }
 
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
        countFrequencies(list);
    }
}

输出

Element Geeks occurs: 2 times
Element for occurs: 1 times

HashSet

这种数据结构不允许重复的元素,因为它实现了Set接口。对象是根据它们的哈希代码插入的。为了计算ArrayList元素的出现次数,我们创建HashSet并添加ArrayList的所有元素。我们使用Collections.frequency(Collection c, Object o)来计算对象o在集合c中的出现次数。以下程序说明了HashSet的工作原理: 查找单词出现的程序

// Java program to count frequencies of elements
// using HashSet and Collections.frequency.
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.*;
 
class GFG {
    public static void countFrequencies(ArrayList<String> list)
    {
 
        // hash set is created and elements of
        // arraylist are inserted into it
        Set<String> st = new HashSet<String>(list);
        for (String s : st)
            System.out.println(s + ": " + Collections.frequency(list, s));
    }
 
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
        countFrequencies(list);
    }
}

输出

Geeks: 2
for: 1

TreeMap

这种数据结构以排序的方式存储独特的元素。它在后台使用红黑树的概念来防止重复。

// Java program to count frequencies of elements
// using HashMap.
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.*;
 
class GFG {
    public static void countFrequencies(ArrayList<String> list)
    {
 
        TreeMap<String, Integer> tmap = new TreeMap<String, Integer>();
        for (String t : list) {
            Integer c = tmap.get(t);
            tmap.put(t, (c == null) ? 1 : c + 1);
        }
 
        for (Map.Entry m : tmap.entrySet())
            System.out.println("Frequency of " + m.getKey() + " is " + m.getValue());
    }
 
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
        countFrequencies(list);
    }
}

输出

Frequency of Geeks is 2
Frequency of for is 1

关键点

  • HashMap实现了Map接口,而TreeMap实现了SortedMap接口。
  • HashMap使用Hashing,而TreeMap使用Red-Black Tree(Balanced BST)。因此, 基于HashMap的解决方案通常比基于TreeMap的解决方案要快得多。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程