A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯鹏飞 黑马帝   /  2011-7-24 22:35  /  2568 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在使用HashMap集合存放数据时,输出显示结果却没有得到理想中的存放时的顺序?在其中到底是怎样存放的,为什么会出现这种情况呢?

评分

参与人数 1技术分 +1 收起 理由
小龙 + 1 虽然不懂技术,但是也跟你加分!

查看全部评分

2 个回复

倒序浏览
黑马网友  发表于 2011-7-24 22:52:33
沙发
使用linkedHashmap,能解决;使用方法和Hashmap一样,但顺序不会乱
import java.util.HashMap;
import java.util.TreeSet;
import java.util.Set;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
public class HashMapSort{
public static void main(String [] args){
Map <String,Integer> hm= new LinkedHashMap<String,Integer>();

hm.put("a",5);
hm.put("c",7);
hm.put("d",8);
hm.put("v",0);
hm.put("m",3);
hm.put("u",10);
hm.put("e",2);
hm.put("g",6);
System.out.println("键的顺序:");
for(String s: set){

System.out.println(s);

}
}
}

评分

参与人数 1技术分 +2 收起 理由
小龙 + 2 看到了一张熟悉面孔!哈哈

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-24 23:07:08
藤椅
Hashmap实际上是一个数组和链表的结合体(在数据结构中称为“链表散列“),当我们往hashmap中put元素的时候,先根据key的hash值得到这个元素在数组中的位置(即下标),然后就可以把这个元素放到对应的位置中了。如果这个元素所在的位子上已经存放有其他元素了,那么在同一个位子上的元素将以链表的形式存放,新加入的放在链头,最先加入的放在链尾。

评分

参与人数 1技术分 +1 收起 理由
小龙 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马