我正在尝试以找到的每个最小值x的方式构造聚类,我们收集相应的点并构造聚类x3:[x1,x2]的元素。
为此,我使用一个列表来存储相应的点,然后将它们插入哈希表的每个元素。
问题是所有元素的临时列表都更新了,给我类似
3 [4, 2, 5, 1, 0]
4 [4, 2, 5, 1, 0]
预期结果是
1 [ 1, 0]
3 [3]
4 [4, 2, 5]
这是我尝试过的:
ConcurrentHashMap<Integer, Double> E = new ConcurrentHashMap();
HashSet<Integer> dataPoints = new HashSet();
HashMap<Integer, List<Integer>> clusters = new HashMap<>();
List<Integer> l = new ArrayList<>(); //list of corresponding points for each xmin
System.out.println("size one :" + dataPoints.size());
while (!E.isEmpty()) {
int xMin = getKey(E, MinX(E, dataPoints));
System.out.println("you re " + xMin);
dataPoints.add(xMin);
l.add(xMin);
System.out.println("Xmin " + xMin);
E.remove(xMin);
//checking id X exists in data points if no return close elements
for (int j = 0; j < S.getRow(xMin).length; j++) {
if (!dataPoints.contains(j) ) {
if (S.getEntry(xMin, j) > beta) {
System.out.println(j);
dataPoints.add(j);
l.add(j);
E.remove(j);
}
}
clusters.put(xMin, l);
}
}
What am I missing