我有一个元组类,它有:
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。