有一个问题,其中.equals()的基础实现将2个Map视为相同,这是因为它们的键值对,而不是它们的mem ref。虽然我知道这是正确的过程,但我仍然想根据唯一参考将它们添加到另一个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()

10-08 01:20