完全一致または部分一致の値を持つことができる同じキーを持つ2つのマップがあります。これらの部分一致と部分一致に基づいて、私は正確な一致カウンターと部分一致カウンターを更新する必要があります。完全一致のための私のカウンターはオリオールズのために1ずつ増加すべきであり、部分一致のための1つは、カンザスシティの運動競技のために1ずつ増加すべきである。ここ完全一致と部分一致の2つのマップの値の比較
{ORGANIZATION=[Orioles, Athletics]}
{ORGANIZATION=[Orioles, Kansas City Athletics]}
:
マップのような値が含まれています。 現在、私がmap1.get(key).equals(map2.get(key))
とmap1.get(key).contains(map2.get(key))
を使ってやっているところでは、私のカウンターの値が間違っています。
EDIT
はここに私のコードです:あなたは部分一致の場合の条件のいずれかを逃し、おそらく
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
@sndndipityおそらく、部分一致の場合にどちらかの条件を逃した場合は、答えを試してみてください。 あなたの質問に答えた場合は、答えとしてマークしてください –