对于集合中的每个循环

时间:2018-02-17 05:16:56

标签: java set maps

我有一个带有以下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'); } }); }

的HashTable

然后我通过调用{4:1, 3:56, 4:3, 4:5, 9:89, etc.}将此表的键变为键集。

如何遍历该集合以仅输出与4的键相关联的值?我希望输出为map.keySet()因此我只想要与键相关联的值4?这是可能的,如果是这样的话。

3 个答案:

答案 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