领域,在字符串列表中搜索

Realm, searching in String list

我有一个项目 (RealmObject),它们有条形码 (RealmList)。 我要查询哪个项目包含搜索到的条形码。

public class Item extends RealmObject {
    @PrimaryKey
    private long id;
    private RealmList<String> barcodes;

我已经试过了,但是太慢了,因为我有很多物品,而且这些物品有多个条形码:

for (Item item : realm.where(Item.class).findAll()) {
                    if (item.getBarcodes().contains(barcode)) {
                        itemId = item.getId();
                        return;
                    }
                }

提前致谢。

不确定原始支持列表查询,但您可以创建新的 class Barcode 扩展 RealmObject 与字符串字段

public class Barcode extends RealmObject{
   private String barcodeId;
}

然后将RealmList<String> barcodes替换为RealmList<Barcode> barcodes然后这样查询

RealmResult<Item> realmResult = realm.where(Item.class).equalTo("barcodes.barcodeId",barcode).findAll();

也可以添加@Index注解,提高查询速度(但写起来可能会慢一点)docs

public class Barcode extends RealmObject{
      @Index
       private String barcodeId;
    }