亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這種情況如何與 ArrayList 一起使用?

這種情況如何與 ArrayList 一起使用?

慕的地6264312 2021-09-12 10:28:52
這個場景真的很不一樣,我想實現,但我不知道如何去做。我的場景是這樣的:我有一個ArrayList,這ArrayList總是用新的更新。請這樣想。列表一是我的目標列表。我在這個列表中有這些項目:乙丙我在首次發布時兩次保存此列表:list_old_one - list_new_one幾分鐘后,新物品與舊物品一起出現。A B C D而且我正在保存這個列表: list_new_one我想做這個。如果C不存在 to list_one_now,我只想顯示這個,我想刪除所有其他項目,只顯示C而不是D我厭倦了equal和removeAll部分但也即將到來的項目D因為它不相等。我的數組列表:TinyDB tinydb = new TinyDB(getApplicationContext());//Adding current list to new onetinydb.remove("list_new_one");tinydb.putListString("list_new_one", all_list);ArrayList<String> list_old = new ArrayList<>(tinydb.getListString("list_old_one"));ArrayList<String> list_new = new ArrayList<>(tinydb.getListString("list_new_one"));   list_old.removeAll(list_new);   if (list_new.size() != 0) {        //Adding results to database        DBRecentlyHelper dbRecentlyHelper = new DBRecentlyHelper(getApplicationContext());        dbRecentlyHelper.RecentlyADD(list_old, current_user);        dbRecentlyHelper.close();       //Updating old list       tinydb.remove("list_old_one");       tinydb.putListString("list_old_one", all_list);  }else{       //Updating old list       tinydb.remove("list_old_one");       tinydb.putListString("list_old_one", all_list);  }我真的在找一個星期,但仍然得到錯誤的結果。如果有人有想法,我會很高興。非常感謝。
查看完整描述

3 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

你可以試試這個:

myList.stream().filter(item -> item.equals("C")).collect(Collectors.toList());

由于 list_new 中不存在“D”項,因此 removeAll 無法將其刪除。如果您需要檢查您的列表是否包含“C”項,您可以這樣做:

if(myList.contains("C")){myList = myList.stream().filter(item -> item.equals("C")).collect(Collectors.toList());}

您不需要使用兩個列表來刪除所有其他項目。


查看完整回答
反對 回復 2021-09-12
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

成功的答案是好的方法,也是困難的方法。因為你不需要得到物品。Android 操作系統總是可以等同于短文本或長文本。


代替:


list_old.removeAll(list_new);

到:


for(String i: new ArrayList<>(list_old)) {

                for(String j: new ArrayList<>(list_new)) {

                    if (!i.equals(j)) {

                        list_old.add(i);

                        break;

                    }

                }

            }

你會得到正確的結果。


查看完整回答
反對 回復 2021-09-12
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

您得到錯誤的列表,因為您將列表等同于列表。這樣做;


創建一個像 SQLite 一樣的 SQLite DBRecentlyHelper。例如:DBOldListItems和DBOldListItems


將所有項目保存到我所說的新數據庫中,并將其與項目相等。


舊物品:


A - B - C

新東西:


A - B - C - D

例子:


if(!olditems.get(i).item.equals(newitems.get(i)){

    olditems.get(i).item

}

如果, A item 將不等于 newitems 數組,您將得到結果。在結果之后,您可以更新您的舊項目,并且您可以執行更多、更多、更多的操作。


如果您有什么不明白的地方,請與我聯系。也許我的英語聽不懂:)


查看完整回答
反對 回復 2021-09-12
  • 3 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號