java计数重复键值对?

时间:2012-10-16 15:47:48

标签: java count compare

我有一个Tuple类,它有:

private class Tuple {
    private int fileno;
    private int position;

    public Tuple(int fileno, int position) {
        this.fileno = fileno;
        this.position = position;
    }
}

我也有一个反映这个列表的散列图,如

    Map<String, List<Tuple>> index = new HashMap<String, List<Tuple>>();

现在有一种情况我需要计算文件中的单词数量:数据如下:

abc 10.txt
abc 10.txt
abc 10.txt
abc 12.txt
abc 12.txt
ghost 15.txt
and so on....

现在如何计算上述次数?它很简单,但我已经编写了这么长时间,也是java的新手。 我也学过重复不能进入hashmap!感谢。

将数据添加到列表中:

List<Tuple> idx = index.get(word);
                            if (idx == null) {
                                idx = new LinkedList<Tuple>();
                                index.put(word, idx);
                            }
                            idx.add(new Tuple(fileno, pos));

上面的代码只是转储数据,现在我将与字符串数组[]中的单词进行比较。 我最后需要的就像这样: abc 10.txt count - 3 abc 12.txt计数 - 2 ghost 15.txt count - 1

我不确定地图是否有帮助/我需要再次使用列表/编写一个函数来执行此操作?谢谢!

我用简单的条件语句解决了上述问题!谢谢@codeguru

/*
                     consider all cases and update wc as along
                     Lesson learnt - Map does not handle duplicates
                                    - List does not work
                                    - spend half a day figuring out 
                     */
                    if(wordInstance == null && fileNameInstance == null) {
                          wordInstance = wordOccurence;
                          fileNameInstance = files.get(t.fileno);
                    }
                    if(wordInstance == wordOccurence && fileNameInstance ==files.get(t.fileno)) {
                          wc++;
                    }
                    if(wordInstance == wordOccurence && fileNameInstance !=files.get(t.fileno)) {
                        wc=0;
                        fileNameInstance = files.get(t.fileno);
                        wc++;
                    }
                    if(wordInstance != wordOccurence && fileNameInstance ==files.get(t.fileno)) {
                        wc=0;
                        wordInstance = wordOccurence;
                        wc++;
                    }

1 个答案:

答案 0 :(得分:1)

我认为你可能会让它变得比它需要的更复杂。我建议你从电脑上退后一步。首先,您应该采用一个简单的输入示例,然后手动确定输出应该是什么。接下来,写一些句子(用您的母语)描述您为完成此输出所采取的步骤。从那里,您需要优化您的描述,直到您可以轻松地将其转换为Java。