HashMap计数值

时间:2015-10-15 21:22:59

标签: java

所以下面我试图演示一个有点现实的版本,说明如何使用伪代码实现我的程序..所以我有一个hashmap。我打算阅读一个文本,并在添加字母表的字符时递增;所以最终结果将是" doog" d = 1 o = 2 g = 1。

它会遍历文本并返回值,但是它会为每个字符提供不正确的计算。我的代码似乎完全有效,它正在计算字符,但只是不等于应该是什么= /如果有人对为什么计算错误有任何想法,请向我解释。

while((text = something.readLine()) != null){

        for i = 0; i < text i++
        {
            if (hash map already contains the key at text.charAt(i){
                continue;
            }add the following to my hashmap(text.charAt(i), incrementer++); 
            }
            else{
            add (text.charAt(i), incrementer);  
            }
        }
    }

3 个答案:

答案 0 :(得分:0)

很难读取你的伪代码,但我认为你在循环中增加了太多次。对于哈希映射中存在的每个评估,可能会错过一两个字符。只需增加for循环定义,就可以正常工作。

答案 1 :(得分:0)

一个错误: continue语句:在java中它将跳转到for循环,并且不会在hashmap中使用字符计数器,但它应该这样做。

答案 2 :(得分:0)

如果您打算计算字符串中字符的出现次数,那么主题行应该更清楚。

public static Map<String, Integer> getOccurences(String string) {
    Map<String, Integer> occurenceMap = new LinkedHashMap<>();
    String[] strArray = string.split(StringUtils.EMPTY);
    int count = 0;
    for(String str : strArray) {
        if(occurenceMap.containsKey(str)) {
            continue;
        }
        count = StringUtils.countMatches(string, str);
        occurenceMap.put(str, count);

    }
    return occurenceMap;
}

没有Apache Commons的备用版本。

public static Map<String, Integer> getOccurences(String string) {
    Map<String, Integer> occurenceMap = new LinkedHashMap<>();
    String[] strArray = string.split("");
    int count = 0;
    for(String str : strArray) {
        if(occurenceMap.containsKey(str)) {
            count = occurenceMap.get(str).intValue();
            count++;
        } else {
            count = 1;
        }
        occurenceMap.put(str, count);

    }
    return occurenceMap;
}
相关问题