返回信息流rt, 第一次用hashmap 。
我是从文件中读取 30个数据存入 hashmap 中,再将这个 hashmap 中的数据提供给别的函数。但是再次取出hashmap 中数据时,发现大概是在第 18组数据后,数据顺序就乱了,情况如下: 17和18 的数据对换, 19和20 的数据对换,21和22。。。这是什么原因呢?小菜坐等达人解答。。。
对了,我在hashmap 初始化时没有明确指出所需间和增长因子,是不是和这个有关呢?
这是一条镜像帖。来源:北邮人论坛 / java / #15750同步于 2010/9/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
hashmap 乱序的问题
Aprilforever
2010/9/24镜像同步18 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
无代码,无真相
【 在 Aprilforever 的大作中提到: 】
: rt, 第一次用hashmap 。
: 我是从文件中读取 30个数据存入 hashmap 中,再将这个 hashmap 中的数据提供给别的函数。但是再次取出hashmap 中数据时,发现大概是在第 18组数据后,数据顺序就乱了,情况如下: 17和18 的数据对换, 19和20 的数据对换,21和22。。。这是什么原因呢?小菜坐等达人解答。。。
: 对了,我在hashmap 初始化时没有明确指出所需间和增长因子,是不是和这个有关呢?
: ...................
【 在 Aprilforever 的大作中提到: 】
: rt, 第一次用hashmap 。
: 我是从文件中读取 30个数据存入 hashmap 中,再将这个 hashmap 中的数据提供给别的函数。但是再次取出hashmap 中数据时,发现大概是在第 18组数据后,数据顺序就乱了,情况如下: 17和18 的数据对换, 19和20 的数据对换,21和22。。。这是什么原因呢?小菜坐等达人解答。。。
: 对了,我在hashmap 初始化时没有明确指出所需间和增长因子,是不是和这个有关呢?
: ...................
hashmap本来就没保证迭代的时候是顺序吧。
我记得treemap是有顺序的。
【 在 wodetiandi 的大作中提到: 】
: 应该用linkedhashmap吧,hashmap好像是无序的
: ps:不用java好久,仅供别无选择时参考
嗯,我再试试,也是初学,看到好多 Map也不知道用哪个好,就先用了 HashMap,呵呵
【 在 feel48 的大作中提到: 】
: hashmap本来就没保证迭代的时候是顺序吧。
: 我记得treemap是有顺序的。
换了 TreeMap,果然就对了,网上搜了下这个原因,一些解释如下:
HashMap岂止不能排序!就算你把排好序的元素依次放进HashMap、过段时间其次序会随机变乱的。
HashMap不能保证元素顺序、遇到虚拟机不定时的整理内存堆肯定会把其次序打乱、只能保证元素不会丢。
看到上面两段我就有疑问了,如果说 HashMap 中,就算你把排好序的元素依次放进HashMap、过段时间其次序会随机变乱的。 那么引入它的最初动机是什么呢?仅仅是为了保存数据,而不管数据间原有顺序?还是说 HashMap 还有更大的作用?不过不管怎么说,我觉得这个原有顺序是必须得保证的呀。。。
呵呵,由于刚学,各种疑问啊,期待解答ing
[em18]
【 在 ddi 的大作中提到: 】
: 总的来说 hashpmap是效率最高的
: treemap可以保持按key排序
: linkedhashmap可以按照你put的顺序有序
“treemap可以保持按key排序
linkedhashmap可以按照你put的顺序有序 ”
这个对我太有用了,看了这个才知道根据需求,自己的程序里最好还是得用 linkedhashmap,谢谢啊~