Topic: 关于HashMap的“关键字-值”对的显示顺序 |
Print this page |
1.关于HashMap的“关键字-值”对的显示顺序 | Copy to clipboard |
Posted by: snowbird2005 Posted on: 2005-06-12 22:46 请看以下小程序: import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapDemo { public static void main(String[] args) { Map map = new HashMap(); map.put("1","value1"); map.put("2","value2"); map.put("3","value3"); map.put("4","value4"); System.out.println(map.get("1")); Set keySet = map.keySet(); for (Iterator iterator = keySet.iterator(); iterator.hasNext() { System.out.println(iterator.next()); } Collection values=map.values(); for (Iterator iterator = values.iterator(); iterator.hasNext() { System.out.println(iterator.next()); } Set entrySet=map.entrySet(); for (Iterator iterator = entrySet.iterator(); iterator.hasNext() { System.out.println(iterator.next()); } } } 以上程序执行结果如下: value1 3 2 4 1 value3 value2 value4 value1 3=value3 2=value2 4=value4 1=value1 我想问的是:为什么不管是关键字、值还是关键字--值对的映射关系, 他们的显示顺序都是3,2,4,1。每次执行都一样,应该也不是随机显示的。 为什么不是象我定义的顺序1,2,3,4 呢? |
2.Re:关于HashMap的“关键字-值”对的显示顺序 [Re: snowbird2005] | Copy to clipboard |
Posted by: Jove Posted on: 2005-06-12 23:06 因为"1" "2" "3" "4"的散列值不一定是顺序的 |
3.Re:关于HashMap的“关键字-值”对的显示顺序 [Re: Jove] | Copy to clipboard |
Posted by: snowbird2005 Posted on: 2005-06-12 23:35 谢谢! 散列值不同,那么迭代时是按照散列值由大到小还是由小到大的顺序显示呢? 另外,每次显示的顺序都一样,就是说每次使用了相同的哈希函数? 能不能得到它的哈希函数? |
4.Re:关于HashMap的“关键字-值”对的显示顺序 [Re: snowbird2005] | Copy to clipboard |
Posted by: bluepure Posted on: 2005-06-13 00:16 用java.util.TreeMap 。 |
5.Re:关于HashMap的“关键字-值”对的显示顺序 [Re: bluepure] | Copy to clipboard |
Posted by: snowbird2005 Posted on: 2005-06-13 00:53 谢谢! 但是我仍然想知道以下问题,你知道吗? (散列值不同,那么迭代时是按照散列值由大到小还是由小到大的顺序显示呢? 另外,每次显示的顺序都一样,就是说每次使用了相同的哈希函数? 能不能得到它的哈希函数?) |
6.Re:关于HashMap的“关键字-值”对的显示顺序 [Re: snowbird2005] | Copy to clipboard |
Posted by: zerol Posted on: 2005-06-13 02:14 跟踪一下 HashMap 及其内部类 HashIterator 好了。 (缩略图,点击图片链接看原图) |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |