java - 实时firebase分页时删除重复项的算法
问题描述
我需要确保我的回收站只有独特的物品。仅仅因为在分页中我在添加新数据之前将项目分成小部分,我需要检查是否有任何项目已经添加到回收站中。我创建了过滤器方法,但由于某种原因它不起作用。
我的逻辑是,我的班级中有一个列表,它使用第一个查询获取所有数据,但是当在适配器中添加数据之前完成第二个查询时,我需要检查是否有之前已经添加的任何项目并将它们从列表中删除。
这是代码
public void addRealUsers(List<OnlineUser> onlineUsers) {
//Here we are getting small portions of new data
mUserList.addAll(onlineUsers);
//Third list which contains only items from new data which are not been received before
filteredList = new ArrayList<>();
removeDuplicates(onlineUsers);
//Adding only filtered list items
mAdapter.addUsers(filteredList);
}
private void removeDuplicates(List<OnlineUser> onlineUsers) {
for (OnlineUser databaseUser : onlineUsers){
for (OnlineUser localUser : mUserList) {
//Checking if new received data already been added to the local list
if (localUser.hashCode() == databaseUser.hashCode()) {
filteredList.add(databaseUser);
}
}
}
}
模型类
public class OnlineUser {
private String uid, name, image, gender, country;
private long rating;
public OnlineUser() {
}
public OnlineUser(String uid, String name, String image, String gender, String country, long rating) {
this.uid = uid;
this.name = name;
this.image = image;
this.gender = gender;
this.country = country;
this.rating = rating;
}
解决方案
使用它从数据中删除重复的项目。
Set<String> stringHashSet = new LinkedHashSet<>(allDataArrayList);
allDataArrayList.clear();
allDataArrayList.addAll(stringHashSet);
可能还有其他解决方案取决于您如何从 Firebase(实时或 Firestore 数据库)填充 recyclerView 所以如果您需要更多帮助,那么也添加您的 firebase 查询过程。
推荐阅读
- php - 如何使用 PHP 将三角形系列打印到文件上?
- java - Java方法没有正确退出return语句
- python - unsqueeze 在 pytorch 中有什么作用?
- bash - 如何在 Bash 中打印粗体和大小的文本?
- youtube - 这是一个错误还是 YouTube 删除了访问权限?
- java - JApplet 幻灯片中的公共空白绘制(图形 g)错误
- flutter - 如何在 Flutter 中创建从左到右或从上到下的叠加飞溅动画
- ruby - 如何从 rakefile 执行 linux 命令?
- javascript - Jest - AWS Lambda 测试
- angular - Angular 8 ng-bootstrap 5 表格排序不起作用