Recorrer un hashmap y calcular min y stop cuando no quedan puntos

Tengo un hashmap que contiene (punto, valor), calculo el valor mínimo en el hashmap. Segundo, el punto recuperado lo utilizo para extraer los valores correspondientes de una matriz. luego almaceno xmmin y los puntos se recuperaron en una lista de arrays

Mi objetivo es no considerar un punto si ya existe en la lista de arrays. He intentado esto pero se atasca con el primer minuto.

Esto es lo que he intentado

       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);          

                   }
               }
           }

Aquí está la función IfExists


       for (int k = 0; k < dataPoints.size(); k++) {
           if (dataPoints.get(k) != xMin) {
               return false;
           }

       }
       return true;

   }

How can I achieve that
Respuesta 1

Actualmente, su existsXmétodo contiene esto:

for (int k = 0; k < dataPoints.size(); k++) {
  if (dataPoints.get(k) != xMin) {
    return false;
  }
}
return true;

Lo cual regresará inmediatamente falseen el primer elemento que no sea el xMin, mientras que desea lograr lo contrario: regrese truetan pronto como xMinse encuentre así:

for (int k = 0; k < dataPoints.size(); k++) {
  if (dataPoints.get(k) == xMin) {   // != has been changed to ==
    return true;                     // Return true as soon as we've found it
  }
}
return false;                        // Return false if it wasn't found

Mejor aún, sin embargo, sería confiar más en las construcciones que hacen el trabajo por usted. En este caso tu:

if(!existsX(dataPoints,xMin))

Se puede cambiar a:

if(!dataPoints.contains(xMin))

Entonces no necesitará hacer su propio existsXmétodo. Aquí los JavaDocs para la List#containsconstrucción.

Respuesta: 2

Soy nuevo en Optaplanner e intento resolver un problema bastante simple (por ahora, agregaré más restricciones eventualmente). Mi modelo es el siguiente: Tengo tareas (MarkerNesting), que deben ejecutarse una a la ...

Soy relativamente nuevo en Java y tuve un examen el año pasado que me atascó. La tarea me pidió que diferenciara qué opciones se ejecutan en tiempo de compilación / tiempo de ejecución. Tipo de fundición. Atascamiento tardío. ...

Estoy desarrollando un juego del ahorcado para la universidad. Y debe estar sobre sockets, con servidor y clientes. El juego funciona bien por ahora. Pero cuando lo juegan dos personas, tratando de adivinar la misma palabra, yo ...

Estoy tratando de convertir el código scala anterior al código java 1.8. En scala, estaba usando un mapa para almacenar todas las referencias de funciones de clases respectivas. Como se muestra aquí en la clase Driver.scala ...