【问题标题】:Realm Java: Support for HashMap and LatLngRealm Java:支持 HashMap 和 LatLng
【发布时间】:2017-08-25 00:01:42
【问题描述】:

在我的 android 应用程序中,我正在尝试使用 Realm 存储我的数据,我的数据结构如下所示。 这是CrimeDatabase 对象的列表。 CrimeDatabase 有两个属性:DateHashMap<LatLng, CrimeIncident>HashMap 的键是 LatLng,它存储犯罪的坐标,CrimeIncident 是我的自定义类对象,它存储其他信息。所以简而言之,我的数据结构 visually 看起来像这样:

DATE 08/01/2017
   - HashMap<LatLng, CrimeIncident>
      - LatLng: 39.9526° N, 75.1652° W
      - CrimeIncident: Address, Time, CrimeType
   - HashMap<LatLng, CrimeIncident>
      - LatLng: 39.9530° N, 75.1648° W
      - CrimeIncident: Address, Time, CrimeType
DATE 08/02/2017
   - HashMap<LatLng, CrimeIncident>
      - LatLng: 39.9533° N, 75.1659° W
      - CrimeIncident: Address, Time, CrimeType
   - HashMap<LatLng, CrimeIncident>
      - LatLng: 39.9524° N, 75.1630° W
      - CrimeIncident: Address, Time, CrimeType

下面是我的代码。我遵循将CrimeDatabase对象包装在RealmList中的方法,来自this answer

public class CrimeRealmObject extends RealmObject {
    public RealmList<CrimeDatabase> crimeMap;
}

public class CrimeDatabase extends RealmObject {
    private Date date;
    private HashMap<LatLng, CrimeIncident> myHashMap;
}

Realm 甚至不允许我将 HashMap 放入 CrimeDatabase 对象中。我什至尝试创建一个带有键/值属性的RealmHashMap 类,但它抛出了一个错误,说不支持LatLng

关于如何完成这项工作的任何想法?谢谢!

【问题讨论】:

  • Map 不受 Realm 支持。有关解决方法,请参阅 stackoverflow.com/questions/35311755/…
  • 我知道这一点,我已经尝试过这个答案。请阅读我的问题的下半部分。
  • 如果不支持 LatLng,如何创建一个具有双重属性的对象(同时用于纬度和经度)?您可以稍后创建一个方法,以便稍后从双属性创建一个 LatLng 对象。
  • @ParthBhoiwala 将@Ignore 放在您的myHashMap 上,让领域忽略它。 realm.io/docs/java/latest/#ignoring-properties

标签: java android realm


【解决方案1】:

您可以轻松地将该结构映射到每个 RealmObject 中,将它们保存到 Realm 中,让您的生活更轻松。

CrimeIncident extends RealmObject  {
     Date date;
     double lat;
     double lng;
     String address;
     Date time;
     String crimeType;

然后,如果您需要给定日期的对象,只需将该给定日期作为条件执行 RealmQuery

【讨论】:

  • 感谢您的回答。那么我是否必须将所有CrimeIncident 对象放在一个大RealmList 中并查询整个数据库以获取某个日期的犯罪事件?或者我可以将它们放在 Realm 中的某种 HashMap 中以便更快地访问数据?
  • 什么?不涉及 RealmList,只有这个对象。当你查询它们时,你会得到它们作为 RealmResults
猜你喜欢
  • 2012-06-24
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多