gpt4 book ai didi

java - 有人可以解释 SharedPreferences 如何存储字符串集

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:30 25 4
gpt4 key购买 nike

我试图在共享首选项中保存一个名称列表,并希望使用 SharedPreferences putStringSet 这样我就不需要多个键值对.
我知道常规 HashSet 不能保证迭代顺序,所以我使用 LinkedHashSet 将迭代顺序维护为插入顺序并将其保存到共享首选项。

当检索相同的字符串集时,我还使用了 LinkedHashSet,但顺序与最初插入时的顺序不同。

我通过将名称存储在逗号分隔的字符串中然后对其进行解析来解决问题,所以这不是我的问题。

我想知道 SharedPreferences 对一组字符串做了什么,以便它不保持正确的顺序(至少不是我想要的顺序)?

最佳答案

简而言之,为了回答您的问题,它通过从您的值创建一个简单的 HashSet 来取消链接您的链接哈希集...从那时起 - 没有顺序链接。

来自源代码:

public Editor putStringSet(String key, Set<String> values) {
synchronized (this) {
mModified.put(key,
(values == null) ? null : new HashSet<String>(values));
return this;
}
}

这就是为什么,就像您所做的那样,如果您想保留顺序,您需要存储为带分隔符的字符串(您使用了逗号),然后拆分分隔符以获得一个数组。

关于java - 有人可以解释 SharedPreferences 如何存储字符串集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37121092/

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