java - 这种情况如何与 ArrayList 一起使用?
问题描述
这个场景真的很不一样,我想做,但我不知道怎么做。我的场景是这样的:
我有一个ArrayList
,它ArrayList
总是用新的更新。请这样想。
清单一是我的目标清单。我在这个列表中有这些项目:
甲乙丙
我在第一次启动时保存了这个列表两次:list_old_one
- list_new_one
几分钟后,新物品与旧物品一起出现。
A B C D
而且我正在保存这个列表:list_new_one
我想做这个。如果C不存在list_one_now
,我只想显示这个,我想删除所有其他项目,只显示C而不是D
我厌倦了equal
和removeAll
部分,但也来了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);
}
我真的在一周内寻找,但我仍然得到错误的结果。
如果有人有想法,我会很高兴的。非常感谢。
解决方案
你可以试试这个:
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());}
您不需要使用两个列表来删除所有其他项目。
推荐阅读
- python-3.x - Pytest.paramterize 需要在另一个 pytest 测试生成的列表上运行
- hash - 如何从整数向量生成唯一的哈希键?
- json - 合并和排序 JSON 数组
- python - None 背后的概念是什么?
- java - 我得到了 listView 中每个项目的密钥并将其保存到 Firebase 我想将该密钥发送到另一个活动,但每次我得到相同的密钥
- python - 如何更改在pyqt5 python3中单击按钮时显示的.ui文件
- service-worker - 使用 Service Worker 管理服务器端事件
- python - 无法检索烧瓶中的值
- python - 如何使用鼠标单击使用 OpenCV 和 Python 更改变量?
- javascript - 从 chrome 开发工具获取 CSS 作为 JavaScript 对象值