java - 如何绕过 ArrayList.contains 使用 ==

标签 java arraylist

有一个问题,.equals() 的底层实现将 2 个 Map 视为相同,因为它们的键值对,而不是它们的内存引用。虽然我知道这是正确的过程,但我仍然想根据唯一引用将它们添加到另一个 ArrayList 中。

String[] sortedStringOfDatesFromTempMaps = new String[dates.length];

List<Map<String, String>> tempTradeMap;

 for (int i = 0; i < sortedStringOfDatesFromTempMaps.length; i++) {
        String[] stringSplitArr = new String[2];
        stringSplitArr = sortedStringOfDatesFromTempMaps[i].split("=");

        for (int j = 0; j < tempTradeMap.size(); j++) {
            if (tempTradeMap.get(j).containsValue(stringSplitArr[0])
                    && tempTradeMap.get(j).containsValue(stringSplitArr[1])){

               if(!sortedMapList.contains(tempTradeMap.get(j))){
                    sortedMapList.add(tempTradeMap.get(j));
                }

                break;
            }
        }
    }

我遇到的问题是,sortedMapList 首先应该具有与传入的元素数量相同的元素。然而,由于 contains impl 同等对待它们,因此它们只添加一个。因此,如果有 5 个元素,其中有 2 个重复对,则最终列表将仅包含 3 个元素。

最佳答案

您可以创建您正在使用的Map实现的子类并覆盖equals()hashCode()

关于java - 如何绕过 ArrayList.contains 使用 ==,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8537912/

相关文章:

java - 创建未知对象的集合

java - 如何在entityManagerFactory中注入(inject)Hibernate Interceptor类

java - 搜索保存在文件中的 ArrayList 中的数据并将其打印在文本字段中

java - 将 ID 列表与其对应的对象进行匹配

java - 递归函数——保存ArrayList Java

python - Fortran:稀疏数组或列表

JAVA:文字游戏查询

java - 与单元测试 Controller 和服务方法的区别

java - 如何在我的自定义标签中使用 struts bean 标签?

java - 如何按值复制(深度复制)类型为 List<List<Integer>> 的对象?