我有兩個具有相同鍵的地圖,這些鍵的值可能完全匹配或部分匹配。基於這些確切和部分匹配我需要更新我的確切和部分匹配計數器。比較完成和部分匹配的兩個地圖的值
地圖包含類似的值:
{ORGANIZATION=[Orioles, Athletics]}
{ORGANIZATION=[Orioles, Kansas City Athletics]}
這裏我表示完全匹配計數器應以1爲金鶯遞增,一個部分匹配應該由1堪薩斯城競技遞增。 現在我使用map1.get(key).equals(map2.get(key))
和map1.get(key).contains(map2.get(key))
的方式給我的計數器值不正確。
編輯
這裏是我的代碼:
List<Integer> compareResults = new ArrayList<Integer>();
for (String key: annotationMap.keySet()){
if (key.equals("ORGANIZATION")){
if (annotationMap.get(key).equals(myMap.get(key))){
orgTruePositiveCount++;
continue;
}
if (annotationMap.get(key).contains(myMap.get(key))){
orgTruePositiveCount++;
continue;
}
if (!annotationMap.get(key).contains(myMap.get(key))){
orgFalseNegativeCount++;
continue;
}
}
if (key.equals("PERSON")){
if (annotationMap.get(key).equals(myMap.get(key))){
perTruePositiveCount++;
continue;
}
if (annotationMap.get(key).contains(myMap.get(key))){
perTruePositiveCount++;
continue;
}
if (!annotationMap.get(key).contains(myMap.get(key))){
perFalseNegativeCount++;
continue;
}
}
if (key.equals("LOCATION")){
if (annotationMap.get(key).equals(myMap.get(key))){
locTruePositiveCount++;
continue;
}
if (annotationMap.get(key).contains(myMap.get(key))){
locTruePositiveCount++;
continue;
}
if (!annotationMap.get(key).contains(myMap.get(key))){
locFalseNegativeCount++;
continue;
}
}
}
for (String key: myMap.keySet()){
if (!annotationMap.containsValue(myMap.get(key))){
if (key.equals("ORGANIZATION")){
orgFalsePositiveCount++;
}
if (key.equals("PERSON")){
perFalsePositiveCount++;
}
if (key.equals("LOCATION")){
locFalsePositiveCount++;
}
}
}
添加ŧ他與計數器的增量一起編碼。 –
請用你嘗試過的東西編輯。順便說一句,當你使用'.equals'和鍵是相同的,你的櫃檯增量?當你使用'.contains'?我知道你說過,有不正確的值,但是有什麼價值? – Mike
@serendipity,可能是您在部分匹配的情況下錯過了任一情況,請嘗試答案。 如果它回答您的查詢請標記爲回答 –