首页 > 解决方案 > 实时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;
    }

标签: javaandroidalgorithm

解决方案


使用它从数据中删除重复的项目。

Set<String> stringHashSet = new LinkedHashSet<>(allDataArrayList);
allDataArrayList.clear();
allDataArrayList.addAll(stringHashSet);

可能还有其他解决方案取决于您如何从 Firebase(实时或 Firestore 数据库)填充 recyclerView 所以如果您需要更多帮助,那么也添加您的 firebase 查询过程。


推荐阅读