Realm Java:支持HashMap和LatLng

时间:2017-08-23 02:25:15

标签: java android realm

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

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

以下是我的代码。我遵循从this answer

包装RealmList中的CrimeDatabase对象的方法
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不受支持。

有关如何使这项工作的任何想法?谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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