我有一个具有重复值的流输入。我可以使用任何数据结构,但是我必须计算每个元素的出现次数。假设我有一个手机供应商列表,如下所示:

苹果
诺基亚
三星
苹果
LG
诺基亚
宏达电
安卓系统
苹果
诺基亚
诺基亚
苹果
三星

我必须构建任何数据结构,最好是具有细节的地图,例如

苹果4
诺基亚4
三星2
LG,1
安卓1

我不确定这是否最佳。有没有比这更好的解决方案?
实际上,我还没有将以上内容编写为代码。因此,更好的代码也将有所帮助。

最佳答案

是的,我会使用Map<String, Integer>。我将add包装成这样:

private static void incrementValue(Map<String, Integer> counters, String toAdd) {
    Integer currValue = counters.get(toAdd);
    if (currValue == null)
        counters.put(toAdd, 1);
    else
        counters.put(toAdd, currValue+1);
}

或没有泛型:
private static void incrementValue(Map counters, String toAdd) {
    Integer currValue = (Integer) counters.get(toAdd);
    if (currValue == null)
        counters.put(toAdd, 1);
    else
        counters.put(toAdd, currValue+1);
}

07-24 15:15