メソッドでマップを削除しました"remove(key)"
が、値だけが削除されました。メソッドを呼び出すときkeySet()
。鍵はまだあります!!。以下のプログラムでは、最短距離を持つ 2 つのグループ (HashMap の 2 つのマップ) を見つけたいと考えています。次に、それらをマージします。つまり、これら 2 つのグループを削除し、マージされたグループをマップに配置する必要があります。
/* I have already initiate the HashMap groups*/
ArrayList<String> listGroupNames ;
while (currentNumberOfGroup > 1000){
System.out.println("Groups" + currentNumberOfGroup);
listGroupNames = new ArrayList<String>(groups.keySet());
/* Name of two groups will be merged*/
String candidate1 = "";
String candidate2 = "";
double maxSimilarity = 0;
/* finding two groups which have shortest distance*/
for(String event1 : listGroupNames){
for(String event2 : listGroupNames){
if(!event1.equalsIgnoreCase(event2)){
Group group1 = groups.get(event1);
Group otherGrp = groups.get(event2);
double similarity = group1.getMaxSimilarityWith(otherGrp, simpledEvent);
if(similarity > maxSimilarity){
maxSimilarity = similarity;
candidate1 = event1;
candidate2 = event2;
}
}
}
}
/* 2 groups have shortest distance were found already*/
/* Merge 2 groups then replace these two groups by merged group*/
Group groupCandidate1 = groups.get(candidate1) ;
Group groupCandidate2 = groups.get(candidate2) ;
Group mergerdGroup = groupCandidate1.mergeToOtherGroup(groupCandidate2);
/*remove 2 found groups*/
groups.remove(candidate2);
groups.remove(candidate1);
groups.put(mergerdGroup.name, mergerdGroup);
listGroupNames.clear();
currentNumberOfGroup --;
}