[英]Java Hashmap - Getting/retrieving “key” by passing “value” as parameter in a method
[英]Method that checks if a parameter has occurred in a hashmap(Key)
我有两个参数代表可能在文档中找到的两个区分大小写的词。 我需要一个方法,如果第一个参数在文档中至少出现一次并且紧跟在第二个单词之后至少一次,则该方法必须返回 true。 否则它必须返回false。
这是我的代码。
public boolean nextTo(String firstInput, String secondInput) {
Iterator it = Words.keySet().iterator();
while (it.hasNext() == true)
{
it.next();
if (Words.containsKey(firstInput))
{
if(Words.higherKey(secondInput))
{
return true;
}
}
}
return false;
解决方案1:
将文档表示为String[]
并只迭代文档中的单词。 当您看到firstInput
,测试下一个单词是否为secondInput
。
解决方案2:
为文档创建反向索引; 即Map<String, int[]>
,其中String
键是单词, int[]
值包含文档中每个单词出现的索引。
从文档填充反向索引。
然后,查找是否firstInput
后跟secondInput
:
int[] fi = reverseIndex.get(firstInput);
int[] si = reverseIndex.get(secondInput);
if (fi == null || si == null) {
return false;
}
for (int i = 0; i < fi.length; i++) {
for (int j = 0; j < si.length; j++) {
if (fi[i] == si[j] - 1) {
return true;
}
}
}
return false.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.