Я пытаюсь построить кластеры так, чтобы каждый найденный минимум х, мы собираем соответствующие точки и строим элемент кластера х3: [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