HashMap 是否保持其顺序(不是插入顺序)

发布于 2025-01-09 06:07:05 字数 470 浏览 0 评论 0原文

抱歉,如果这个问题的答案已经存在。我只是找不到它。 我不关心插入顺序,我只是想确保 HashMap 保持其顺序,而中间不使用任何 put。

如果我有以下代码:

StringBuilder keyChecker = new StringBuilder("");
for(String field : hashmap().keySet()){
    keyChecker.append(field).append(",");
}

for(String field : hashmap().keySet()){
    setAny(checker,x++, hashmap().get(field) );
    x++;
}

下次调用 HashMap 键集时,(1st,2nd,3rd,etc) 字段是否始终与相同的字段匹配。

从我的测试来看,它似乎总是如此,但我不确定我可能遇到的任何边缘情况。

Sorry if and answer to this is out there. I just could not find it.
I don't care about insertion order, I just want to ensure that HashMap keeps its order without any puts being used in between.

If I have the following code:

StringBuilder keyChecker = new StringBuilder("");
for(String field : hashmap().keySet()){
    keyChecker.append(field).append(",");
}

for(String field : hashmap().keySet()){
    setAny(checker,x++, hashmap().get(field) );
    x++;
}

Will the (1st,2nd,3rd,etc) field always match the same one next time I call HashMap keyset.

From my tests it seems like it always does, but I am not sure about any edge cases that I may come across.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海螺姑娘 2025-01-16 06:07:06

是的。如果没有添加新项目,它将保持其顺序。空闲地图不仅仅决定重新排列自己。但该顺序是不确定的,一旦添加项目就可能会发生变化。

Yes. It will keep its order if no new items are added. An idle map does not just decide to rearrange itself. But that order is non deterministic and can change once items are added.

凝望流年 2025-01-16 06:07:06

WJS 是正确的。也就是说,依赖于此是非常糟糕的风格。如果您实际上依赖于条目的顺序,我建议使用 TreeMap 或 OrderedMap 的 Apache Commons 实现之一。

您也许可以假设现在的顺序是稳定的……但是如果另一个开发人员处理该代码,则该假设可能不为人所知,并且代码将以意想不到的方式中断,这将是一个令人头疼的问题有人来解决。

如果您依赖于输入顺序,请使用保证该顺序的数据结构。

WJS is correct. That said, it is very bad style to depend on this. If you actually depend on the order of the entries, I would suggest using a TreeMap or one of the Apache Commons implementations of OrderedMap.

You might be able to get by with your assumption that the order will be stable right now ... but if another developer works on the code, that assumption might not be known and the code will break in unexpected ways that will be big headache for somebody to solve.

If you depend on entry order, use a data structure that guarantees that order.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文