哪种方法更适合查找arraylist中元素的频率?

she*_*tal 1 java arraylist

我创建了一个数组列表并随机插入了一些元素.我试图找到每个元素出现的频率.我尝试了两种方法并且都工作正常.第一种方法是使用JAVA中提供的直接方法,即,

  Collection.frequency(collection,"element");
Run Code Online (Sandbox Code Playgroud)

第二种方法是将ArrayList元素放入HashMap并查找频率

    List<String> elements = new ArrayList<String>();
    elements.add("A");
    elements.add("B");
    elements.add("C");
    elements.add("A");

    Map<String,Integer> count = new HashMap<String,Integer>();

    for(String s : elements)
    {
        if(count.containsKey(s))
        {
            count.put(s,count.get(s)+1);
        }
        else
        {
            count.put(s, 1);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这两种方法都运行正常.但我想知道哪种方法更好.

ass*_*ias 8

这取决于您需要获取频率信息的频率 - 如果它是一个关闭Collections::frequency方法就好了,否则地图将更有效.另请注意,使用Java 8,您可以使用以下命令保存几行代码:

Map<String, Long> count = elements.stream().collect(groupingBy(e -> e, counting()));
Run Code Online (Sandbox Code Playgroud)

假定以下导入:
import static java.util.stream.Collectors.counting;
import static java.util.stream.Collectors.groupingBy;