计算列表中每个项目的出现次数

Har*_*ish 5 java collections data-structures

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

Apple
Nokia
Samsung
Apple
LG
Nokia
HTC
Android
Apple
Nokia
Nokia
Apple
Samsung

我必须构建任何数据结构,最好是带有详细信息的地图

Apple,4
Nokia,4
Samsung,2
LG,1
Android,1

我不确定这是否是最佳的.有没有比这更好的解决方案?
实际上我还没有把上面的内容写成代码.所以更好的代码也会有所帮助.

Mic*_*ers 5

是的,我会用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);
}
Run Code Online (Sandbox Code Playgroud)

或者没有泛型:

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);
}
Run Code Online (Sandbox Code Playgroud)