我有一个列表,我转换为地图做一些工作.之后,我将地图再次转换回列表,但这次订单是随机的.我需要在第二个列表中保留相同的初始订单.
显而易见的原因是HashMap没有维护顺序.但我需要做一些事情才能做到.我无法更改Map实现.我该怎么做?
考虑给定的代码:
import java.util.*;
public class Dummy {
public static void main(String[] args) {
System.out.println("Hello world !");
List<String> list = new ArrayList<String>();
list.add("A");list.add("B");list.add("C");
list.add("D");list.add("E");list.add("F");
Map<String,String> map = new HashMap<String, String>();
for(int i=0;i<list.size();i=i+2)
map.put(list.get(i),list.get(i+1));
// Use map here to do some work
List<String> l= new ArrayList<String>();
for (Map.Entry e : map.entrySet()) {
l.add((String) e.getKey());
l.add((String) e.getValue());
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于ex - 最初,当我打印列表元素时,它打印出来
A B C D E F
Run Code Online (Sandbox Code Playgroud)
现在,当我打印元素时List l,它会打印出来
E F A B C D
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 35
HashMap本身不维护插入顺序 - 但LinkedHashMap确实如此,所以请使用它.
记录...... HashMap:
这个类不保证地图的顺序; 特别是,它不保证订单会随着时间的推移保持不变.
Map接口的哈希表和链表实现,具有可预测的迭代顺序.此实现与HashMap的不同之处在于它维护了一个贯穿其所有条目的双向链表.此链接列表定义迭代排序,通常是键插入映射的顺序(插入顺序).
使用LinkedHashMap而不是HashMap来维护顺序.
Map<String,String> map = new LinkedHashMap<String, String>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33093 次 |
| 最近记录: |