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

问题描述 投票:1回答:1

我有一个项目(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;
                    }
                }

提前致谢。

android performance realm realm-mobile-platform realm-list
1个回答
1
投票

不确定原始支持列表查询,但是你可以用String字段创建扩展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;
    }
© www.soinside.com 2019 - 2024. All rights reserved.