Как ограничить количество объектов, возвращаемых Царством? .findAll возвращает все строки, соответствующие запросу, и .findFirst возвращает только первый. Но как насчет первого 1000? .findAll может возвращать так много строк, что он потребляет слишком много памяти.Результаты Limit Realm
ответ
Круто, что вам не нужно беспокоиться об этом с помощью Царства. Объект результата, возвращаемый из запроса, лениво загружает объекты и свои поля при доступе к ним. Ваши объекты никогда не копируются и поэтому отображаются только один раз в памяти/диске.
Эта (реализация) деталь реализации этого объекта заключается в том, что объект RealmResults, возвращаемый из запроса, представляет собой список ссылок на соответствующие объекты. Эти ссылки - это крошечные цифры, которые хранятся сжатыми, поэтому они занимают очень мало памяти. Так что даже с 100 000 матчами на самом деле это не займет много памяти. И это займет столько же памяти для всех объектов, будь то одно поле int или сотни полей со строками или большими двоичными файлами.
Одним из способов может быть это, если вы действительно хотите только RealmResults
, используя Streamlimit
метод:
//get all results of your choice query
RealmResults<TypeClass> entities = realm.where(TypeClass.class).findAll();
//limit using Stream
List<Integer> ids = Stream.of(entities).limit(10).map(x -> x.Id).collect(Collectors.toList());
//return only those ids elments
return realm.where(TypeClass.class).in("Id", ids.toArray(new Integer[])).findAll();
Realm в настоящее время не обеспечивают функции ограничения, но если вы хотите, первые N элементов
int N=10; // whatever value you want
Realm mRealm=Realm.getDefaultInstance();
RealmResults<Example> list= mRealm.where(Example.class).findAll();
list.subList(0,N);
для последних элементов N
Я вычислил решение для достижения этого после стольких дней, используя запрос «между», как это указано в официальных документах. https://realm.io/docs/java/latest
Если вы хотите получить первые N элементов, просто передайте счет с и с именем поля
realm.where(clazz).between("count",0,1000).findAll();
Где
"считать" = имя поля (т.е. имя переменной в вашем POJO)
"0" = Диапазон От
"1000" = Диапазон для
Например: Приведенный выше запрос будет получать первые 0 до 1000, как RealmResults.
Примечание. Вышеупомянутое решение работает только в том случае, если у вас есть уникальный идентификатор с количеством строк. В моем случае я вручную вставил значение счетчика строк, прежде чем вставлять значения в Realm.
- 1. MongoDB limit найти результаты
- 2. Realm fetch возвращает неправильные результаты
- 3. LIMIT результаты вложенных JOIN запросов
- 4. Результаты базы данных Limit Eloquent
- 5. SQL LIMIT не возвращает результатов, где нет LIMIT возвращает результаты
- 6. Realm Swift Результаты получают объект по индексу
- 7. Realm запрос, чтобы исключить результаты отношений
- 8. Realm DB Realm.asObservable() дважды испускает результаты
- 9. Как подделать Результаты Realm для испытаний
- 10. Realm дает устаревшие результаты в многопоточном сценарии
- 11. Запросить конкретные результаты из массива Realm
- 12. Как перебирать результаты в Realm с Swift
- 13. Limit Kentico результаты поиска по группе пользователей
- 14. Может ли LIMIT изменять результаты запросов?
- 15. Limit SOQL результаты запроса из пункта детского
- 16. результаты Limit NSFetchedResultsController и получить больше
- 17. Limit подобные идентификаторы - результаты в SQL
- 18. Android SearchRecentSuggestionsProvider limit limit
- 19. iCloud mail limit limit limit
- 20. parse push limit limit limit
- 21. Realm 0.99 Swift let realm = попробуйте! Realm()
- 22. Libre Office Calc limit limit limit
- 23. Notepad ++ replace limit character limit limit
- 24. Parse.com Limit Limit - Эффекты whereKey Limit?
- 25. Facebook Places API 500 limit limit
- 26. Perl Expect limit limit
- 27. fgets limit limit length
- 28. ScriptDb limit limit
- 29. Подпоследователь под Limit Limit
- 30. twitter API limit limit
Не забудьте пересчитать их в 'entity''s RealmChangeListener – EpicPandaForce