Tengo una lista de puntos 2D (una clase de Nodo personalizada). Me gustaría elegir un Nodo y decir "Ehy, los 10 nodos más cercanos en mi lista son esos diez"
Ahora, ¿cuál es el problema? Me gustaría hacer algo como:
ArrayList<Node> nodes; //list of nodes ArrayList<Node> topten; //list of nearest nodes Node currentNode; //the current point for (Node x : nodes){ if (x.distance(currentNode) < (topten.THE_FURTHER_POINT()).distance(currentNode)) topten.ADD(x); }Me gustaría saber si ya existe una colección que tiene esos pseudométodos (THE_FURTHER_POINT y ADD) Esos dos métodos deberían funcionar así:
THE_FURTHER_POINT: devuelve el punto posterior. La colección debe tener una longitud fija, por lo que este método siempre debe devolver el último elemento (si tengo 8 elementos dentro de los diez primeros, debería recibir el nodo con índice 7, si tengo 10 elementos, debería recibir el nodo con índice 9)
AGREGAR: cada vez que se agrega un elemento, si la colección está llena, se eliminan los últimos elementos. La colección debe estar siempre ordenada, y esta operación debe ser lo más rápida posible (si tengo 8 elementos en el topten, terminaré con 9 elementos después del agregado. Si tengo 10 elementos, terminaré con 10 elementos después del complemento)
¡Muchas gracias!
Al final, lo que realmente estaba buscando era una colección.
Entonces... Después de leer Java PriorityQueue con tamaño fijo , creo que encontré mi respuesta. Esto puede considerarse una pregunta duplicada.