gpt4 book ai didi

java - 如何将 HashMap 转换/转换为 LinkedHashMap?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:51 25 4
gpt4 key购买 nike

我正在使用 Hawk作为 SharedPreferences 的替代品在我的申请中。

我正在尝试存储 LinkedHashMap在其中,但出于某种原因,当我将其从 Hawk 中拉回时,它会作为常规 HashMap 返回而不是 LinkedHashMap .此时我崩溃了 ClassCastException作为HashMap无法转换为 LinkedHashMap直截了当。

所以问题是如何转换返回的 HashMap成为LinkedHashMap

最佳答案

所有建议您可以从 HashMap 创建 LinkedHashMap 的答案在技术上都是正确的,但不会给您想要的结果:-(

当然,您可以从 HashMap 创建一个 LinkedHashMap,但是不能保证 LinkedHashMap 具有相同的顺序那是你的原作。

问题是,当您的 LinkedHashMap 作为普通无序 Map 存储到持久性存储中时,它会被序列化,这不会持续存在于单个项目的排序中.当您随后从持久存储中提取对象时,它作为普通的 HashMap 返回,并且它已经失去了“顺序”(这正是您想要的 LinkedHashMap首先)。如果您随后从返回的 HashMap 创建一个 LinkedHashMap,排序很可能与原始顺序不同。

为了正确执行此操作,您可能应该将 LinkedHashMap 转换为有序的对象数组,并将此有序数组存储在持久性存储中。然后,您可以从持久存储中读回有序的对象数组,并以正确的顺序重新创建 LinkedHashMap。基本上,您需要自己序列化和反序列化 LinkedHashMap

参见 my answer to this question了解更多详情。

关于java - 如何将 HashMap 转换/转换为 LinkedHashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38957055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com