【问题标题】:How to delete duplicates from ListView<HashMap<>>如何从 ListView<HashMap<>> 中删除重复项
【发布时间】:2017-10-08 06:44:29
【问题描述】:

列表重复了许多相同的值,我想删除它们。也许有人会检查哪里出了问题或提供一种新的方法来做到这一点?

class Duplicats implements Comparator {
    public int compare(Object obj1, Object obj2) {
        HashMap<String, String> test1 = (HashMap<String, String>) obj1;
        HashMap<String, String> test2 = (HashMap<String, String>) obj2;
        if(test1.get("name").equalsIgnoreCase(test2.get("name"))){
            return 0;
        }
        return 1;
    }
}

【问题讨论】:

    标签: android listview hashmap


    【解决方案1】:

    假设您可以将obj1 中的值替换为obj2 中的值(如果您切换顺序,反之亦然):

    Map<String, String> objCombined = new HashMap<String, String>();
    
    //Add the 2nd object's items
    objCombined.putAll( (HashMap<String, String>) obj2);
    
    //Add the first object's items, replacing duplicates
    objCombined.putAll( (HashMap<String, String>) obj1);
    

    如果您希望保留 obj2 的值,只需切换上面 put 调用的顺序即可。

    【讨论】:

    • 那么我应该如何修改我的代码?我想不重复列出
    • @Torwopik 您的代码实际上没有列出任何内容。它是一个比较器,可用于更改列表。而不是使用上面显示的代码,只需使用我的答案中的代码,然后objCombined 是您的列表,没有重复。
    【解决方案2】:

    那么从这个位置怎么做呢?

    {
     ...
    
                        HashMap<String, String> controllers = new HashMap<>();
    
                        controllers.put("id", id);
                        controllers.put("name", name);
    
                        DevicesList.add(controllers);
    
    
                        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 2019-06-26
      • 1970-01-01
      • 2020-10-06
      • 2022-01-27
      • 1970-01-01
      相关资源
      最近更新 更多