循环遍历哈希图并计算最小值并在没有剩余点时停止

我有一个包含(点,值)的哈希图,我计算哈希图中的最小值。其次,检索点我使用它从矩阵中提取相应的值。然后我存储 xmmin,并在数组列表中检索点


我的目标是不考虑数组列表中已经存在的点。我已经尝试过了,但它坚持在第一分钟。


这是我尝试过的


       List<Integer> dataPoints = new ArrayList(); // Storing parsed elements including Xmin           

       HashMap<Integer, List<Integer>> clusters = new HashMap<>();


       ArrayList<Integer> listt = new ArrayList<>();

       List<Integer> l = new ArrayList<>(); //list of points for each xmin

       while(E.size()!=dataPoints.size()) {

       int xMin = getKey(E,MinX(E));

       System.out.println("Xmin "+xMin);

       if (!existsX(dataPoints, xMin)) {


       dataPoints.add(xMin);


       //checking id X exists in data points if no  return  close elements

       for (int j = 0; j < S.getRow(xMin).length; j++) {

       if (S.getEntry(xMin, j) > beta) {


       l.add(j);

       dataPoints.add(j);          


                   }

               }

           }

这是 IfExists 函数



       for (int k = 0; k < dataPoints.size(); k++) {

           if (dataPoints.get(k) != xMin) {

               return false;

           }


       }

       return true;


   }


How can I achieve that


qq_遁去的一_1
浏览 167回答 2
2回答

慕的地6264312

目前,您的existsX-method 包含以下内容:for (int k = 0; k < dataPoints.size(); k++) {&nbsp; if (dataPoints.get(k) != xMin) {&nbsp; &nbsp; return false;&nbsp; }}return true;它将立即返回false第一个不是 的项目xMin,而您想要完成相反的操作:true一旦xMin发现就返回:for (int k = 0; k < dataPoints.size(); k++) {&nbsp; if (dataPoints.get(k) == xMin) {&nbsp; &nbsp;// != has been changed to ==&nbsp; &nbsp; return true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Return true as soon as we've found it&nbsp; }}return false;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Return false if it wasn't found然而,更好的是更多地依赖为您完成工作的内置函数。在这种情况下,您的:if(!existsX(dataPoints,xMin))可以改为:if(!dataPoints.contains(xMin))所以你不需要制作自己的existsX- 方法。这里是内置的 JavaDocs 。List#contains

翻翻过去那场雪

你ifExists应该是&nbsp; &nbsp;for (int k = 0; k < dataPoints.size(); k++) {&nbsp; &nbsp; &nbsp; &nbsp;if (dataPoints.get(k) == xMin) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp;}&nbsp; &nbsp;return false;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java