第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

合并 Firestore 查詢(xún)時(shí)出現(xiàn)重復(fù)數(shù)據(jù)

合并 Firestore 查詢(xún)時(shí)出現(xiàn)重復(fù)數(shù)據(jù)

MMTTMM 2021-12-30 16:44:10
我的后端建立在 Firestore 上,并且沒(méi)有邏輯OR來(lái)構(gòu)建我的查詢(xún),因此為了解決這個(gè)問(wèn)題,我使用多個(gè)查詢(xún)并將它們合并來(lái)模擬邏輯OR,查詢(xún)請(qǐng)求和合并工作完美,但現(xiàn)在還有另一個(gè)問(wèn)題我得到了重復(fù)數(shù)據(jù),所以為了解決這個(gè)問(wèn)題,我決定創(chuàng)建一個(gè)HashSet并將我的對(duì)象存儲(chǔ)在其中,但我仍然在哈希集中獲得重復(fù)數(shù)據(jù)這是我合并查詢(xún)的方法:    Tasks.whenAllSuccess(c).addOnSuccessListener(new BaseValueOnSuccessListener(mapper, firebaseCallback));c 是 Task 的集合這是我存儲(chǔ)數(shù)據(jù)的方式(在我的自定義 BaseValueOnSuccessListener 偵聽(tīng)器中):請(qǐng)檢查我的 OnSuccess 方法public class BaseValueOnSuccessListener<Model, Entity> implements OnSuccessListener<List<QuerySnapshot>> {    private FirebaseMapper<Entity, Model> mapper;    // FirebaseDatabaseRepositoryCallback is an interface    private FirebaseDatabaseRepository.FirebaseDatabaseRepositoryCallback<Model> callback;    public BaseValueOnSuccessListener(FirebaseMapper<Entity, Model> mapper,                                      FirebaseDatabaseRepository.FirebaseDatabaseRepositoryCallback<Model> callback) {        this.mapper = mapper;        this.callback = callback;    }    @Override    public void onSuccess(List<QuerySnapshot> querySnapshots) {        // Do what you need to do with your list        if (!querySnapshots.isEmpty()) {            // List<Model> data = new ArrayList<>();            Set<Model> data = new HashSet<>();            for (QuerySnapshot querySnapshot : querySnapshots) {                data.addAll(mapper.mapList(querySnapshot));            }            callback.onSuccess(new ArrayList<Model>(data));        }    }}
查看完整描述

1 回答

?
POPMUISE

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊

現(xiàn)在還有另一個(gè)問(wèn)題我得到了重復(fù)數(shù)據(jù),所以為了解決這個(gè)問(wèn)題,我決定創(chuàng)建一個(gè)哈希集并將我的對(duì)象存儲(chǔ)在其中,但我仍然在哈希集中獲得重復(fù)數(shù)據(jù)


您將獲得重復(fù)數(shù)據(jù),因?yàn)槟谔砑覵et不同類(lèi)型的對(duì)象Model。Model集合中的每個(gè)對(duì)象在內(nèi)存中都有不同的地址,這就是為什么集合中的每個(gè)對(duì)象都不同的原因。這Set是一個(gè)擴(kuò)展 Collection 的接口,因此當(dāng)使用這樣的集合時(shí),除非您指定它,否則您無(wú)法知道對(duì)象中的字段是否與另一個(gè)對(duì)象中的另一個(gè)字段具有相同的值。


aSet和 a之間有很大的區(qū)別List。如果您正在使用:


List<String> list = new ArrayList<>();

list.add("user2426691");

list.add("user2426691");

list.add("user2426691");

Log.d(TAG, list.toString());

您會(huì)看到您的列表將包含三個(gè)重復(fù)的名稱(chēng)。但是,如果您Set在以下代碼行中使用了 a of 字符串:


Set<String> set = new HashSet<>(list);

Log.d(TAG, set.toString());

你會(huì)注意到你的Set遺囑只包含一個(gè)元素(沒(méi)有重復(fù))。


要解決您的問(wèn)題,您可以使用 aList或 aSet但您需要根據(jù)條件填充所需的對(duì)象集合,這可能是:


if(!model.getName().equals("someName")) {

    list.add(model);

}


查看完整回答
反對(duì) 回復(fù) 2021-12-30
  • 1 回答
  • 0 關(guān)注
  • 210 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)