Hola.
Una LinkedList es casi lo mismo que un ArrayList, solo que tiene mejor rendimiento insertando elementos, pero peor rendimiento haciendo búsquedas entre sus elementos.
Más info aquíEl programa te pide algo así.
Primero una clase Ubicacion, que sea capaz de compararse mediante sus coordenadas para ordenarse de forma ascendente:
package ubicacionLinkedList;
public class Ubicacion implements Comparable<Ubicacion>{
private int coordX;
private int coordY;
public Ubicacion(int cX, int cY) {
coordX = cX;
coordY = cY;
}
public int getCoordX() {
return coordX;
}
public int getCoordY() {
return coordY;
}
@Override
public String toString() {
return String.format("[X: %d / Y: %d]", coordX, coordY);
}
@Override
public int compareTo(Ubicacion otraUbicacion) {
if (coordX != otraUbicacion.coordX)
return Integer.compare(coordX, otraUbicacion.coordX);
else
return Integer.compare(coordY, otraUbicacion.coordY);
}
}
Luego, simplemente hay que añadir Ubicaciones a una LinkedList y mantenerlas ordenadas.
Finalmente buscar cuál es la que tiene mayor valor en la coordenada Y.
Lo pide con GUI, no tengo tiempo ahora, pero en modo consola vendría a ser algo como esto:
public class Test {
public static void main(String[] args) {
var ubicaciones = new LinkedList<Ubicacion>();
var teclado = new Scanner(System.in);
char continuar = 's';
while (continuar == 's') {
System.out.println("Nueva Ubicacion....");
System.out.println("Indique coordenada X: ");
int cX = Integer.parseInt(teclado.nextLine());
System.out.println("Indique coordenada Y: ");
int cY = Integer.parseInt(teclado.nextLine());
//Agregamos Ubicacion y las ordenamos
ubicaciones.add(new Ubicacion(cX, cY));
ubicaciones.sort(null);
//Las mostramos
System.out.println("\nUbicaciones registradas:");
for (Ubicacion ubi: ubicaciones)
System.out.println(ubi);
System.out.println("\n¿Continuar?[s/n]");
continuar = teclado.nextLine().toLowerCase().charAt(0);
}
//Buscamos coordenada con mayor Y
//Para comparar comenzamos con el mínimo valor posible para Y
Ubicacion mayorY = new Ubicacion(0, Integer.MIN_VALUE);
for (Ubicacion ubi: ubicaciones) {
if (ubi.getCoordY() > mayorY.getCoordY()) {
mayorY = ubi;
}
}
System.out.println("\nUbicacion con mayor Y:\n" + mayorY);
System.out.println("\n\n\t\tFIN DE PROGRAMA");
teclado.close();
}
}
En pantalla veremos que las Ubicaciones se van ordenando correctamente, y que al final muestra cuál tiene mayor valor Y
Nueva Ubicacion....
Indique coordenada X:
5
Indique coordenada Y:
5
Ubicaciones registradas:
[X: 5 / Y: 5]
¿Continuar?[s/n]
s
Nueva Ubicacion....
Indique coordenada X:
3
Indique coordenada Y:
3
Ubicaciones registradas:
[X: 3 / Y: 3]
[X: 5 / Y: 5]
¿Continuar?[s/n]
s
Nueva Ubicacion....
Indique coordenada X:
8
Indique coordenada Y:
8
Ubicaciones registradas:
[X: 3 / Y: 3]
[X: 5 / Y: 5]
[X: 8 / Y: 8]
¿Continuar?[s/n]
s
Nueva Ubicacion....
Indique coordenada X:
3
Indique coordenada Y:
9
Ubicaciones registradas:
[X: 3 / Y: 3]
[X: 3 / Y: 9]
[X: 5 / Y: 5]
[X: 8 / Y: 8]
¿Continuar?[s/n]
s
Nueva Ubicacion....
Indique coordenada X:
8
Indique coordenada Y:
1
Ubicaciones registradas:
[X: 3 / Y: 3]
[X: 3 / Y: 9]
[X: 5 / Y: 5]
[X: 8 / Y: 1]
[X: 8 / Y: 8]
¿Continuar?[s/n]
n
Ubicacion con mayor Y:
[X: 3 / Y: 9]
FIN DE PROGRAMA
Y ya está. Según entiendo, esto es lo que se pide, pero mediante una GUI.
Un saludo.