Map的toString()方法问题

DevDiary 2011-12-04 05:51:04
import java.util.HashMap;


public class Test {
public static void main(String[] args) {
HashMap map=new HashMap();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
System.out.println(map.toString());
}
}

如上一点程序,输出为:
{key1=value1, key3=value3, key2=value2}

为什么不是 {key1=value1, key2=value2, key3=value3}

求解答!
...全文
13081 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2011-12-04
  • 打赏
  • 举报
回复
使用 LinkedHashMap 按添加顺序输出。
wang7535067 2011-12-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ticmy 的回复:]
hashmap是无序的,并不是先插入的就排在前面,看看hashmap源码即知
[/Quote]
正解
kouyiSC 2011-12-04
  • 打赏
  • 举报
回复
引用
hashmap是通过散列算法, 当存入一个元素时,会计算key值的Hash码,通过使用Hash码来定位,我们应该把当前的键值对存放到Hash表中的哪个格子中。所以遍历hash表中格子取数据时,HashMap的存入顺序和输出顺序无关。。
如果像实现按照排序输出,可转换为treeMap

HashMap map=new HashMap();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
TreeMap tm = new TreeMap();
tm.putAll(map);
System.out.println(tm.toString()); // 按顺序输出


龙四 2011-12-04
  • 打赏
  • 举报
回复
hashmap是无序的,并不是先插入的就排在前面,看看hashmap源码即知
sun0322 2011-12-04
  • 打赏
  • 举报
回复
结贴给分吧~
sun0322 2011-12-04
  • 打赏
  • 举报
回复
根据hash code来的

System.out.println(map.get("key1").hashCode());
System.out.println(map.get("key2").hashCode());
System.out.println(map.get("key3").hashCode());

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧