迭代后如何清除临时列表

时间:2019-04-20 11:45:22

标签: java arraylist hashmap concurrenthashmap

我正在尝试以找到的每个最小值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

0 个答案:

没有答案