如何将RealmResults <Object>转换为List <Object>
我有RealmResult,我从Realm
收到像
RealmResults<StepEntry> stepEntryResults = realm.where(StepEntry.class).findAll();
现在我要将RealmResults<StepEntry>
转换为ArrayList<StepEntry>
我试试
ArrayList<StepEntry> stepEntryArray = new ArrayList<StepEntry>(stepEntryResults));
但我的ArrayList
的项目不是我的StepEntry
对象,它是StepEntryRealmProxy
我怎样才能转换它? 任何帮助或建议将不胜感激。
为了急切地阅读领域的每一个元素(并且因此使列表中的所有元素变得不受管理,你可以这样做):
List<StepEntry> arrayListOfUnmanagedObjects = realm.copyFromRealm(realmResults);
但是除非你想用GSON序列化对象(特别是因为它用反射而不是用getter读取字段数据),否则你通常没有理由这样做。
由于任何其他原因,通常在其他任何地方混用realm.copyFromRealm
,这显示出对Realm设计的根本性误解。 毕竟,这是一个零拷贝数据库。 从零拷贝数据库复制是可能的。
(PS: RealmResults<T>
已经实现了List<T>
。
@EpicPandaForce的答案很好。 我试过这种方式来优化我的应用程序性能,我发现以下速度更快。 喜欢速度的人的另一种选择:
RealmResults<Tag> childList = realm.where(Tag.class).equalTo("parentID", id).findAll(); Tag[] childs = new Tag[childList.size()]; childList.toArray(childs); return Arrays.asList(childs);
在Kotlin:
var liste : Liste<Etudiant> : listof() val rl = realm.where(Etudiant::class.java).findAll() // subListe return all data contain on RealmResults liste = rl.subListe(0,rl.size)
有用!