有一个问题,其中.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()