java - 如何在保持顺序的同时将 Map<K, V> 转换为两个列表?

标签 java

如何转换 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?

最佳答案

使用 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());
}

关于java - 如何在保持顺序的同时将 Map<K, V> 转换为两个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15881422/

相关文章:

java - 如何使用按钮操作事件来调用其他类?

java - 斯坦福核心 nlp 和 openccg 中的 slf4j 问题

java - "merge"两个读者变成一个作者

java - 当我运行应用程序时,我添加到 JPanel 的组件不会出现

java - 获取 JTable 中已更改/添加或删除的行

java - Blackberry Java 字符串到日期的转换

java - 以编程方式下载 Maven 依赖项

java - static{} block 的目的/优势是什么?

Java心跳框架

java - 如何使用 python(加上 java)在 selenium 中处理 Windows 身份验证弹出窗口