如何将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) 

有用!