第 1 条附言 · 2014-09-02 11:33:48 +08:00
public void updateDistMatrix(HashMap > dist_matrix,ArrayList nearestNodePair,HashMap> clusterSet){
Integer user1 = nearestNodePair.get(0);
Integer user2 = nearestNodePair.get(1);
ArrayList set1 = clusterSet.get(user1);
ArrayList set2 = clusterSet.get(user2);
set1.addAll(set2);
clusterSet.remove(user2);
clusterSet.put(user1, set1);
LinkedList list1 = dist_matrix.get(user1);
LinkedList list2 = dist_matrix.get(user2);
LinkedList newList = mergeSort(list1,list2,nearestNodePair);
dist_matrix.remove(user1);
dist_matrix.remove(user2);
dist_matrix.put(user1, newList);
Iterator iter = dist_matrix.keySet().iterator();
while (iter.hasNext()) {
Integer key = iter.next();
LinkedList value = dist_matrix.get(key);
ArrayList occurence = new ArrayList();
int occurIndex = 0;
for(Node node : value){
if(nearestNodePair.get(0)==node.getImsi() || nearestNodePair.get(1)==node.getImsi()){
occurence.add(occurIndex,node);
occurIndex++;
}
}
if(occurence.size() == 0){
continue;
}
if(occurence.size() == 1){
Node node = occurence.get(0);
if(node.getImsi()==user1){
continue;
}
else{
value.remove(node);
node.setImsi(user1);
int mid = findIndex(value,node.getDist());
value.add(mid, node);
dist_matrix.put(key, value);
}
}
if(occurence.size() == 2){
value.remove(occurence.get(1));
Node node = occurence.get(0);
if(node.getImsi()==user1){
continue;
}
else{
value.remove(node);
node.setImsi(user1);
int mid = findIndex(value,node.getDist());
value.add(mid, node);
dist_matrix.put(key, value);
}
}
}
}
}
class Node{
Integer imsi;
Integer dist;
}