我有一个带有以下fileEvent(fileInput: any) {
self = this;
self.isLoading = true;
s3.upload({ Key: file.name, Bucket: bucketName, Body: file, ACL: 'public-read' }, function (err, data) {
self.isLoading = false;
if (err) {
console.log(err, 'there was an error uploading your file');
}
});
}
然后我通过调用{4:1, 3:56, 4:3, 4:5, 9:89, etc.}
将此表的键变为键集。
如何遍历该集合以仅输出与4的键相关联的值?我希望输出为map.keySet()
因此我只想要与键相关联的值4?这是可能的,如果是这样的话。
答案 0 :(得分:0)
这不是地图的工作方式。地图通常仅将一个值与每个唯一键值相关联。因此,如果您有Map<Integer,Integer> myMap
,则调用myMap.put(4, newValue)
,其中newValue
是某个整数,将覆盖先前映射到4
的值。您可以使用重复值,并且可以使用以下循环打印已映射到该值的所有已知键。
for (Entry<Integer, Integer> entry : myMap.entrySet()) {
if (entry.getValue().equals(4)) {
System.out.println(entry.getKey());
}
}
答案 1 :(得分:0)
HashMap或HashTable只将一个键映射到一个值。
选项1:
如果您想将多个值存储为密钥存储
Map<Integer, List<Integer>> myMap = new HashMap<>();
//To add value for a key
if (!myMap.containsKey(key)) {
myMap.put(new ArrayList<>());
}
myMap.get(key).add(value);
//Get
myMap.get(key); //This will give you the list of value for a given key and null if the key is not present
选项2:
您可以使用Google Guava的MultiMap
答案 2 :(得分:0)
您可以使用Google Guava Collections的MultiMap,因为它允许每个键与多个值相关联。
ListMultimap<String, String> multimap = ArrayListMultimap.create();
multimap.put(key, value);
可以在此处找到文档:https://google.github.io/guava/releases/19.0/api/docs/com/google/common/collect/Multimap.html