我只是好奇有没有办法从Realm查询随机项目?我需要从我的领域中获取4个随机项目+一个指定了ID的特定项目。
答案 0 :(得分:1)
修改:我不知道Realm中有一个获取随机对象的方法,但您可以按照以下说明进行操作。
这样做的一种方法是查询所有对象,然后生成4个随机数(从0到RealmResults的大小),并在这些位置获取对象,例如。这是如何获得一个随机对象:
// get realm
Realm realm = Realm.getDefaultInstance();
// get all objects
RealmResults<YourObject> results = realm.where(YourObject.class).findAll();
// random generator
Random r = new Random(System.nanoTime());
// generate first random number to be from the range [0..number of objects)
int firstRandomNumber = r.nextInt(results.size());
// get first object from results at position randomly generated above
YourObject firstRandomObject = results.get(firstRandomNumber);
答案 1 :(得分:0)
如果你愿意获得独特的结果你可以使用这个函数,在这个函数中我们从realmresult返回一个由n个元素组成的RealmList:
//Realm result
RealmResults<Question> questionRealmResults = QuestionManager.getAllQuestions();
//Realm List to be returned
RealmList<Question> realmList = new RealmList<>();
//List of unique random questions ids
List<Integer> questionIds = new ArrayList<>();
//Random Instance to generate Questions Ids
Random random = new Random();
int randomNumber;
while (questionIds.size() < limit) {
randomNumber = random.nextInt(questionRealmResults.size());
if (!questionIds.contains(randomNumber)) {
questionIds.add(randomNumber);
realmList.add(new TestQuestion(questionRealmResults.get(randomNumber)));
}
}