Hashtable的遍历输出顺序问题

ForeveroLo 2008-10-11 01:39:26
hashtable.put( "One", new Integer(1) );
hashtable.put( "Two", new Integer(2) );

hashtable.put( "Three", new Integer(3) );
hashtable.put("four", new Integer(4));
输出时的顺序为什么是key=One,four,Three,Two??
hashtable遍历的输出顺序到底是怎么样的??????
...全文
1198 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
swoky 2008-10-16
  • 打赏
  • 举报
回复
散列表当然没顺序了,用3楼方法
yhzhw2121 2008-10-16
  • 打赏
  • 举报
回复
LZ到网上查一查数据结构HASH就知道怎么回事了,其实很简单,HASH在内存中分配是不连续的,去的时候按照HASHCODE来取,所以取出来的时候是无序的
xujiaxiang 2008-10-15
  • 打赏
  • 举报
回复
直接 System.out.println(hashtable)输出就行
xuhs 2008-10-15
  • 打赏
  • 举报
回复
此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
自 Java 2 平台 v1.2 以来,此类已经改进为可以实现 Map,因此它变成了 Java Collections Framework 的一部分。与新集合的实现不同,Hashtable 是同步的。
这些在API中都有描述的,因为它实现的是哈希表,所以是无序的,其实所说的无序也不是绝对的无序,它不过是按照自己本身的规则进行排序。
Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子。容量 是哈希表中桶 的数量,初始容量 就是哈希表创建时的容量。注意,哈希表的状态为 open:在发生“哈希冲突”的情况下,单个桶会存储多个条目,这些条目必须按顺序搜索。加载因子 是对哈希表在其容量自动增加之前可以达到多满的一个尺度。初始容量和加载因子这两个参数只是对该实现的提示。关于何时以及是否调用 rehash 方法的具体细节则依赖于该实现。
yhzhw2121 2008-10-15
  • 打赏
  • 举报
回复
HASH保存的东西都是无序滴
horizonlyhw 2008-10-15
  • 打赏
  • 举报
回复
這個輸出 沒有固定的順序
ilrxx 2008-10-14
  • 打赏
  • 举报
回复
lz要看看什么是有序集合,什么是无序集合,用vector就行了
hadelu 2008-10-14
  • 打赏
  • 举报
回复
顺序是字符串的hash值。
hcmsxy 2008-10-11
  • 打赏
  • 举报
回复
如果希望遍历输出的结果与插入顺序相同,
可以使用LinkedHashMap。



例子代码:


public class Test {

public static void main(String[] args) {

Map<String,Integer> hashtable = new LinkedHashMap<String,Integer>();

hashtable.put( "One", new Integer(1) );
hashtable.put( "Two", new Integer(2) );

hashtable.put( "Three", new Integer(3) );
hashtable.put("four", new Integer(4));


System.out.println(hashtable);

}
}



运行结果:{One=1, Two=2, Three=3, four=4}
rosewj 2008-10-11
  • 打赏
  • 举报
回复
代码贴出来
lxjthl 2008-10-11
  • 打赏
  • 举报
回复
你是怎么遍历的?
guestdaocao 2008-10-11
  • 打赏
  • 举报
回复
hashtable里面保存的东西是无序的哈,你要用的话就用LinkedHashMap才是有序的。
ls这位兄弟已经有例子了。

62,625

社区成员

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

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