Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何转换地图<;K、 V>;在保持秩序的情况下,把它们分成两份?_Java - Fatal编程技术网

Java 如何转换地图<;K、 V>;在保持秩序的情况下,把它们分成两份?

Java 如何转换地图<;K、 V>;在保持秩序的情况下,把它们分成两份?,java,Java,如何将映射转换为列表列表键,列表值,以便键和值中的顺序匹配?我只能找到Set Map#keySet()和Collection Map#values(),我可以使用以下方法将其转换为列表: List<String> keys = new ArrayList<String>(map.keySet()); List<String> values = new ArrayList<String>(map.values()); List keys=new

如何将
映射
转换为列表
列表键
列表值
,以便
中的顺序匹配?我只能找到
Set Map#keySet()
Collection Map#values()
,我可以使用以下方法将其转换为列表:

List<String> keys   = new ArrayList<String>(map.keySet());
List<String> values = new ArrayList<String>(map.values());
List keys=new ArrayList(map.keySet());
列表值=新的ArrayList(map.values());
但我担心顺序是随机的

我必须手动转换它们是正确的还是有快捷方式

更新:由于这些答案,我能够找到更多有用的信息,我想与您分享,随机谷歌用户:

您应该提取您提到的键列表,然后迭代它们并提取值:

List<String keys = new ArrayList<String>(map.keySet());
List<String> values = new ArrayList<String>();
for(String key: keys) {
    values.add(map.get(key));
}
List您可以迭代,将键和值附加到两个列表中。

使用Map.entrySet()

List key=newarraylist(map.size());
列表值=新的ArrayList(map.size());
对于(Map.Entry:Map.entrySet()){
key.add(entry.getKey());
add(entry.getValue());
}

请注意,地图不是有序集合。迭代顺序不是固定的。因此,当您向地图中添加更多条目时,它们将在迭代中随机出现,因此不再与您创建的任何列表匹配


如果您需要映射的迭代顺序与插入顺序相同,那么可以查看一下

,您也可以迭代
入口集
,以获得键和值。这是真的-从复杂性角度看,它是相同的。我认为ArrayList保留了我们插入的顺序。@Achtyajha是的,它保留了。但是,映射返回的集合是有序的吗?+1表示不假设两个集合(键和值)具有相同的顺序。我不关心顺序,只是我需要一对(键、值)在两个结果列表中的相同“位置”。这不就是
迭代器吗?是的,您不能确定映射的顺序,但是您可以确保在迭代
入口集
时,
迭代器
以特定的顺序迭代。@MichaWiedenmann:那么,在将值放入两个列表时,您就不必担心了。以后更改列表时要特别小心。+1,但是让我们升级到Java1.5并使用泛型。毕竟,Java 1.8即将面世。我完全同意——我只是没有使用IDE,没有IDE就很难正确使用它们。编辑以反映Java 7泛型。
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());
}