Foros aprenderaprogramar.com
		Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Raquel en 12 de Septiembre 2021, 22:51
		
			
			- 
				Hola, agradecería ayuda para resolver este ejercicio.
 
 Una ubicación tiene una coordenada en X y una coordenada en Y.
 
 Cree una GUI para agregar ubicaciones. Las ubicaciones se guardan en una LinkedList.
 
 Ordene las ubicaciones de acuerdo al orden natural: coordenada X asc y coordenada Y asc.
 Muestre la ubicación con el mayor valor en la coordenada Y.
 
- 
				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í (https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=605:interface-list-clase-linkedlist-api-java-ejercicio-diferencias-entre-arraylist-y-linkedlist-codigo-cu00921c&catid=58&Itemid=180)
 
 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.