我计算文件中的单词,然后将单词及其各自的计数加载到哈希映射中。我已经对值进行了排序,并使用它来检索我的密钥:
public static String getKey(TObjectIntHashMap<String> hash, int value){
for(String s: hash.keySet()){
if(value == hash.get(s)){
key = s;
hash.remove(key);
return key;
}
}
我知道这是一种非常难看的方式,但这是我能够开始工作的唯一方式。我完全知道bimaps的存在,但不愿意使用它。有任何想法吗?
答案 0 :(得分:1)
更有效的方法是使用迭代器,因为这样可以避免必须单独查找键和值:
public static String getKey(TObjectIntHashMap<String> hash, int value){
TObjectIntIterator<String> iterator = hash.iterator();
while (iterator.hasNext()) {
iterator.advance();
if (iterator.value() == value) {
key = iterator.key();
iterator.remove();
return key;
}
}
}
答案 1 :(得分:0)
执行此操作的最佳方法是使用guava集合中的Multiset
。这是一个简单的代码:
//create multiset
Multiset<String> multiset = HashMultiset.create();
//add some strings
multiset.add("a");
multiset.add("a");
multiset.add("b");
//sort and print
System.out.println(Multisets.copyHighestCountFirst(multiset).entrySet();
有关Multiset
的更多信息,请点击此处:
https://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained#Multiset