如何使用Realm查询随机项

时间:2016-04-09 21:52:09

标签: android realm

我只是好奇有没有办法从Realm查询随机项目?我需要从我的领域中获取4个随机项目+一个指定了ID的特定项目。

2 个答案:

答案 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)));
        }


    }