首页 > 解决方案 > 这种情况如何与 ArrayList 一起使用?

问题描述

这个场景真的很不一样,我想做,但我不知道怎么做。我的场景是这样的:

我有一个ArrayList,它ArrayList总是用新的更新。请这样想。

清单一是我的目标清单。我在这个列表中有这些项目:

甲乙丙

我在第一次启动时保存了这个列表两次:list_old_one - list_new_one

几分钟后,新物品与旧物品一起出现。

A B C D

而且我正在保存这个列表:list_new_one

我想做这个。如果C不存在list_one_now,我只想显示这个,我想删除所有其他项目,只显示C而不是D

我厌倦了equalremoveAll部分,但也来了D项,因为它不相等。

我的数组列表:

TinyDB tinydb = new TinyDB(getApplicationContext());

//Adding current list to new one
tinydb.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);
  }

我真的在一周内寻找,但我仍然得到错误的结果。

如果有人有想法,我会很高兴的。非常感谢。

标签: javaandroidandroid-studio

解决方案


你可以试试这个:

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());}

您不需要使用两个列表来删除所有其他项目。


推荐阅读