I am creating an Android app and I need to persist a Map<String,MyClass>
.
I've just started to use Realm ORM, as it supports one-to-one and one-to-many, enumerations and lists. I also found a workaround for lists of strings (i.e. I have to create a StringWrapper class encapsulating a string.
However, from the documentation I understand there is no easy way like RealmMap
, as it happens for lists.
So, I'm looking for the best way to persist a map.
My current idea is to replace my map with a list of objects KeyValueObject
encapsulating a String
(the former map key) and a MyClass
. Similarly to Map.Entry
.
Is there any other solution that does not need me to rework the domain model for technology reasons?
As you notice, Realm doesn't yet support maps: https://github.com/realm/realm-java/issues/759
You could use the model classes:
class MyData extends RealmObject {
private RealmList<MyMapEntry> myMap;
}
class MyMapEntry extends RealmObject {
private String key;
private MyClass value;
}
Say you have a MyData
object called myData
and you wish to fetch the value associated with myKey
, the query MyClass myClass = myData.getMyMap().where().equalTo("key", myKey).firstFirst()
might be useful.