unm*_*dio 11 java hashmap tostring
我有这个非常简单的代码,我只想尝试在Map中使用不同类型的对象.
//There's a bit of spanish, sorry about that
//just think 'persona1' as an object with
//a string and an int
Map mapa = new HashMap();
mapa.put('c', 12850);
mapa.put(38.6, 386540);
mapa.put("Andrés", 238761);
mapa.put(14, "Valor de 14");
mapa.put("p1", persona1);
mapa.put("Andrea", 34500);
System.out.println(mapa.toString());
Run Code Online (Sandbox Code Playgroud)
然后我期望从控制台的东西:
{c=12850, 38.6=386540, Andrés=238761, 14=Valor de 14, p1={nombre: Andres Perea, edad: 10}, Andrea=34500}
Run Code Online (Sandbox Code Playgroud)
但令我惊讶的是,我得到了不同顺序的相同数据:
{38.6=386540, Andrés=238761, c=12850, p1={nombre: Andres Perea, edad: 10}, Andrea=34500, 14=Valor de 14}
Run Code Online (Sandbox Code Playgroud)
如果我尝试其他类型的对象并不重要,即使只是字符串或数字类型,它总是这样做,它会产生一种不同的,没有任何明显的任何意义顺序.
有人能给我一个提示,为什么会这样?或者可能是一个太明显我错过的东西?
我正在使用Java 1.7和Eclipse Juno.
Anu*_*Jha 16
在java中有3个实现map接口的类.1. hashMap:Id不保证任何订单.2.链接的HashMap:它将按插入顺序存储它们.3. TreeMap:它将按升序存储.(ASCII值)
因此,根据您的要求,您可以使用Linked HashMap而不是HashMap.so而不是写入
Map mapa = new HashMap();
Run Code Online (Sandbox Code Playgroud)
创建Linked HashMap的对象
Map mapa = new LinkedHashMap();
Run Code Online (Sandbox Code Playgroud)
请点击以下链接获取更多信息.
http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html
HashMap不保证元素的顺序。如果你想保持顺序使用LinkedHashMap。
参见以下案例
Map<Integer,String> unOrderedMap=new HashMap<>();
unOrderedMap.put(1,"a");
unOrderedMap.put(3,"a");
unOrderedMap.put(2,"a");
System.out.println("HashMap output: "+unOrderedMap.toString());
Map<Integer,String> orderedMap=new LinkedHashMap<>();
orderedMap.put(1,"a");
orderedMap.put(3,"a");
orderedMap.put(2,"a");
System.out.println("LinkedHashMap output: "+orderedMap.toString());
Run Code Online (Sandbox Code Playgroud)
输出:
HashMap output: {1=a, 2=a, 3=a}
LinkedHashMap output: {1=a, 3=a, 2=a}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
42036 次 |
最近记录: |