gpt4 book ai didi

带有 Map 字段的 Java RealmObject

转载 作者:行者123 更新时间:2023-12-01 10:36:57 25 4
gpt4 key购买 nike

我创建了扩展 RealmObject 的类。并计划添加 Map 字段,如下所示,但我注意到 Realm 还不支持 Map

public class SmsPattern extends RealmObject {
@PrimaryKey
private String id;
@Required
private String address;
@Required
private String regex;
@Required
private Map<Integer, Integer> regexGroup;
}

因此,作为替代方案,我将 Map 转换为 Json String 并使用 Json String 而不是 Map像这样。

public class SmsPattern extends RealmObject {
@PrimaryKey
private String id;
@Required
private String address;
@Required
private String regex;
@Required
private String regexGroup;
@Ignore
private Map<Integer, Integer> regexGroupMap;

public Map<Integer, Integer> getRegexGroupMap() {
Type type = new TypeToken<Map<Integer, Integer>>(){}.getType();
return new Gson().fromJson(getRegexGroup(), type);
}

public void setRegexGroupMap(Map<Integer, Integer> regexGroupMap) {
setRegexGroup(new Gson().toJson(regexGroupMap));
}
}

这是正常的解决方案吗?或者有更好的主意吗?

最佳答案

如果您想要一个类似的RealmObject,其行为类似于 map ,您可以自己声明一个,如下所示:

public class RegexGroup extends RealmObject {
@PrimaryKey
private int key;
private int value
}

public class SmsPattern extends RealmObject {
@PrimaryKey
private String id;
@Required
private String address;
@Required
private String regex;
private RealmList<RegexGroup> regexGroup;
}

与 JSON 字符串解决方案相比的优点是

  1. RegexGroup.key 已建立索引,如果您想通过键查询其中一个,速度会非常快。

  2. 您不必像使用 JSON 字符串时那样将整个“映射”加载到内存中(假设您没有使用流解析器)。

  3. @PrimaryKey 保证您的 RegexGroup.key 具有唯一性,这使其更像 map 。

关于带有 Map 字段的 Java RealmObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34635170/

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