我正在创建一个Android应用,并且需要保留一个Map<String,MyClass>。我刚刚开始使用Realm ORM,因为它支持一对一和一对多的枚举和列表。我还找到了解决字符串列表的方法(即,我必须创建一个封装字符串的StringWrapper类。但是,从文档中我了解RealmMap,列表并不存在像这样的简单方法。因此,我正在寻找持久化地图的最佳方法。我目前的想法是用KeyValueObject封装了String(以前的地图关键字)和的对象列表替换我的地图MyClass。类似于Map.Entry。是否还有其他解决方案不需要我重新设计域模型技术原因?
Map<String,MyClass>
RealmMap
KeyValueObject
String
MyClass
Map.Entry
如您所见,Realm尚不支持地图:https : //github.com/realm/realm-java/issues/759
您可以使用模型类:
class MyData extends RealmObject { private RealmList<MyMapEntry> myMap; } class MyMapEntry extends RealmObject { private String key; private MyClass value; }
假设您有一个MyData名为的对象,myData并且希望获取与关联的值myKey,那么该查询MyClass myClass = myData.getMyMap().where().equalTo("key", myKey).firstFirst()可能会很有用。
MyData
myData
myKey
MyClass myClass = myData.getMyMap().where().equalTo("key", myKey).firstFirst()