如何将Map<K, V>
转换为List<K> keys
,List<V> values
列表,以使keys
和values
中的订单匹配?我只能找到Set<K> Map#keySet()
和Collection<V> Map#values()
我可以使用以下内容转换为列表:
List<String> keys = new ArrayList<String>(map.keySet());
List<String> values = new ArrayList<String>(map.values());
但我担心订单是随机的。
我必须手动转换它们还是某个地方有快捷方式?
更新:由于答案,我能够找到我想与您分享的其他有用信息,随机谷歌用户: How to efficiently iterate over each Entry in a Map?
答案 0 :(得分:10)
使用Map.entrySet():
List<String> keys = new ArrayList<>(map.size());
List<String> values = new ArrayList<>(map.size());
for(Map.Entry<String, String> entry: map.entrySet()) {
keys.add(entry.getKey());
values.add(entry.getValue());
}
答案 1 :(得分:1)
您应该按照提到的方式提取密钥列表,然后迭代它们并提取值:
List<String keys = new ArrayList<String>(map.keySet());
List<String> values = new ArrayList<String>();
for(String key: keys) {
values.add(map.get(key));
}
答案 2 :(得分:1)
您可以迭代map.entrySet()
,将键和值附加到两个列表中。
答案 3 :(得分:1)
请注意,地图不是订购的收藏品。迭代顺序不固定。因此,当您在地图中添加更多条目时,它们将出现在迭代中的随机点,因此将不再匹配您创建的任何列表。
如果您需要Map的迭代顺序与插入顺序相同而不是查看LinkedHashMap