用于计算字符串出现次数的最佳方式/数据结构

问题描述 投票:1回答:3

让我们假设我有一个很长的字符串列表。我想计算每个字符串的出现次数。我不知道字符串有多少和哪种(意思是:我没有所有可能字符串的字典)

我的第一个想法是创建一个Map,并在每次找到密钥时增加整数。

但这感觉有点笨拙。有没有更好的方法来计算所有出现的字符串?

java counting find-occurrences word-frequency
3个回答
4
投票

从Java 8开始,最简单的方法是使用流:

Map<String, Long> counts =
    list.stream().collect(
        Collectors.groupingBy(
            Function.identity(), Collectors.counting()));

在Java 8之前,您当前概述的方法可以正常工作。 (而Java 8+方式基本上也是一样的,只是用更简洁的语法)。


1
投票

你也可以不用流来做到这一点:

Map<String, Long> map = new HashMap<>();

list.forEach(x -> map.merge(x, 1L, Long::sum));

0
投票

如果你真的想要一个特定的数据结构,你可以随时看看qazxsw poi:

用法与此类似:

Guava's Multiset
© www.soinside.com 2019 - 2024. All rights reserved.