键是一个文件和一个单词。该文件提供文件中的所有单词。这个词给出了所有包含这个词的文件。我不确定域和共域部分。我希望K的类型为<String>
,V的类型为<HashSet<FileObject>>
。
public HashBiMap<K<String>,V<HashSet<FileObject>>> wordToFiles
= new HashBiMap<K<String>,V<HashSet<FileObject>>>();
public HashBiMap<K<String>,V<HashSet<FileObject>>> fileToWords
= new HashBiMap<K<String>,V<HashSet<FileObject>>>();
答案 0 :(得分:15)
将其更改为
public HashBiMap<String,HashSet<FileObject>> wordToFiles = HashBiMap.create ();
但它看起来仍然很奇怪。我想你应该使用另一个系列。来自BiMap
文档(HashBiMap
要求BiMap
):
bimap(或“双向地图”)是一个 保留唯一性的地图 它的价值以及它的价值 键。此约束启用了bimaps 支持“逆视图”,即 另一个含有相同的bimap 作为这个bimap的条目,但有 反转键和值。
我不知道您要解决的问题,但在查看您的代码后,我建议您考虑使用Multimaps。来自其文档:
类似于地图的集合,但是 这可能会关联多个值 用一把钥匙。如果你叫put(K, V)两次,使用相同的键但是 不同的值,多图 包含从键到两者的映射 值。
例如,您可以执行以下操作:
Multimap<String, FileObject> wordToFiles = HashMultimap.create();
wordToFiles.put("first", somefile);
wordToFiles.put("first", anotherfile);
for (FileObject file : wordToFiles.get("first"){
doSomethingWithFile (file);
}
答案 1 :(得分:10)
将此依赖项添加到您的&#39; build.gradle&#39;
compile 'com.google.guava:guava:19.0'
导入BiMap和HashBiMap
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
创建bimap
BiMap<String, String> myBiMap = HashBiMap.create();
加上一些值
myBiMap.put("key", "value");
按键获取映射值
myBiMap.get("key");
按值获取映射
myBiMap.inverse().get("value");