Java 对重复的键值对进行计数



我有一个元组类,它有:

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的新手。我还了解到重复项不能进入哈希图!谢谢。

将数据添加到列表:

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计数 - 3ABC 12.txt 计数 - 2幽灵 15.txt 计数 - 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++;
                    }
我认为

您可能会使这比需要的更复杂。我建议你从电脑上退后一步。首先,您应该采用一个简单的输入示例,并手动计算输出应该是什么。接下来,写几句话(用你的母语)描述你为计算这个输出而采取的步骤。从那里,您需要优化您的描述,直到您可以轻松地将其转换为 Java。

相关内容

  • 没有找到相关文章

最新更新