В таблице можно сказать 100 наименований, что является лучшим подходом для получения последних 20 объектов.Realm.io Android лучший подход для получения последних 20 предметов из таблицы
Один из способов, который я могу придумать, - загрузить все объекты, развернуть массив, создать новый массив и цикл из результатов для 20-кратного заполнения нового массива и вернуть его.
Нечто подобное следующим образом:
public ArrayList<DataObject> getLastItems (int qty){
RealmResults<DataObject>results = realm.where(DataObject.class).findAll();
Collections.reverse(results);
ArrayList<DataObject>arrayList = new ArrayList<>();
for (int i = 0; i == qty; i++){
arrayList.add(results.get(i));
}
return arrayList;
}
Есть ли более быстрый способ сделать это в андроиде с помощью realm.io?
Update
это так далеко, как это обрабатывается ..
public ArrayList<DataObject> getLastItems (int qty){
RealmResults<DataObject>results = realm.where(DataObject.class).findAll();
ArrayList<DataObject> arrayList = new ArrayList<>();
for (int i = results.size(); i > Math.max(results.size() - 20, 0) ; i--) {
arrayList.add(results.get(i-1));
}
return arrayList;
}
Пожалуйста, вы можете доработать или привести пример? max в области запрашивает строку и возвращает номер –
Math.max должен это сделать. Мое главное - полностью не копировать и просто ссылаться на объекты в области непосредственно с относительным индексом. Это зависит полностью от ваших потребностей и от того, как вы используете этот метод, конечно. Я в основном предлагаю не иметь этот метод, если вы можете его избежать. – bmunk
спасибо за ваш вход. Мне нужно получить последние записи X, введенные в таблицу, я не могу сортировать, так как первичный ключ делится между 3-мя файлами .... я использую max сейчас ... но все же итерацию с последнего от массива до определенного количества. Я хотел избавиться от создания массива, итерации после получения всего объекта с запросом –