存在的問題是.equals()
的底層實現將2 Map
視爲相同,因爲它們的鍵值對而不是它們的mem ref。雖然我知道這是正確的程序,但我仍然希望根據獨特的參考將它們添加到另一個ArrayList
。如何解決ArrayList.contains使用==
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
有相同數量的傳遞中,擺在首位的元素。然而,因爲包含impl的人平等對待他們,他們只能加一個。所以如果有5個元素和2個重複對,最終列表將只包含3個元素。
難道是行「sortedMapList.contains(tempTradeMap.get(j))」嗎? – DJClayworth 2011-12-16 17:39:08