黑马程序员技术交流社区

标题: HashMap的存取问题 [打印本页]

作者: 冯鹏飞    时间: 2011-7-24 22:35
标题: HashMap的存取问题
在使用HashMap集合存放数据时,输出显示结果却没有得到理想中的存放时的顺序?在其中到底是怎样存放的,为什么会出现这种情况呢?
作者: 匿名    时间: 2011-7-24 22:52
使用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);

}
}
}
作者: 匿名    时间: 2011-7-24 23:07
Hashmap实际上是一个数组和链表的结合体(在数据结构中称为“链表散列“),当我们往hashmap中put元素的时候,先根据key的hash值得到这个元素在数组中的位置(即下标),然后就可以把这个元素放到对应的位置中了。如果这个元素所在的位子上已经存放有其他元素了,那么在同一个位子上的元素将以链表的形式存放,新加入的放在链头,最先加入的放在链尾。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2