Java - Ejercicio de lista de empleados

 
Vista:

Ejercicio de lista de empleados

Publicado por lara (1 intervención) el 09/01/2021 20:34:50
Cree una lista que contenga 15 empleados de una empresa, con sus respectivos nombres, apellidos, DNI y salario, que muestre dicha lista ordenada por salario, y si este salario se repite en algunos empleados, los ordene por apellidos. Una vez aumentado el salario se solicita mostrar el nombre, apellidos y salario de los empleados a los cuales se les haya aumentado (se sube el salario a los empleados que hayan cobrado menos de 1500).

Alguna ayuda, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-2
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ejercicio de lista de empleados

Publicado por Kabuto (1381 intervenciones) el 10/01/2021 02:25:53
Hola Lara.

Para empezar hay que crear una clase Empleado con los atributos que ya nos indica el enunciado.
Puesto que se nos pide ordenar de una forma determinada, ya que estamos con programación orientada a objetos, lo ideal es hacer que la clase Empleado implemente la interfaz Comparable

Esta interfaz proporciona un método llamado compareTo() al que deberemos escribir su código para indicar cómo queremos que se comparen dos objetos de nuestra clase Empleado para decidir quién es mayor, quién es menor o si son iguales.

Queremos que se ordenen por salario, así que en el código será lo primero que vamos a comparar. Para facilitar aún más las cosas, para el atributo "salario" podemos usar la clase Integer que ya trae de serie su propio método compareTo(), así que lo que haremos será retornar lo que nos proporcione este método.
En el caso de que los salarios sean iguales, lo que debemos comparar es el atributo "apellidos", que será de la clase String, quien también incorpora su propio método compareTo(), así que de nuevo nos vamos a limitar a retornar los que este método diga.

Esto significa que el código a escribir va a ser treméndamente sencillo

Te dejo aquí mi clase Empleado, presta atención al método compareTo(), más sencillo imposible.
También he sobreescrito el método toString() para poder mostrar los datos en pantalla de forma fácil.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class Empleado implements Comparable<Empleado>{
 
	private String nombre;
	private String apellidos;
	private String dni;
	private Integer salario;
 
	public Empleado(String nom, String ape, String dn, int sal) {
		nombre = nom;
		apellidos = ape;
		dni = dn;
		salario = sal;
	}
 
	public String getNombre() {
		return nombre;
	}
 
	public String getApellidos() {
		return apellidos;
	}
 
	public Integer getSalario() {
		return salario;
	}
 
	public void setSalario(Integer sal) {
		salario = sal;
	}
 
	@Override
	public String toString() {
		return String.format("%s %s %s --> %d€", nombre, apellidos, dni, salario);
	}
 
	@Override
	public int compareTo(Empleado emp) {
		if (salario.equals(emp.salario)) //Mismo salario..
			return apellidos.compareTo(emp.apellidos); //Comparamos apellidos
		else
			return salario.compareTo(emp.salario); //Comparamos salarios
	}
 
}

Pues ese código tan sencillo de apenas 4 líneas para el método compareTo(), nos va ahorrar un montón de trabajo para ordenar tal y como pide el enunciado.

Porque ahora crearemos una lista, con un ArrayList por ejemplo, y a esta colección de datos podemos pedirle que ordene los objetos Empleado que va a contener.
Para ordenar, el ArrayList hará comparaciones y ordenará según lo que le indique el método compareTo() que le hemos escrito a Empleado

Así que en el siguiente programa lo que hago es crear 15 empleados y mostrar como están inicialmente.
Luego pido al ArrayList que se ordene y vuelvo a mostrar el listado, para comprobar si se ha ordenador como se pide.
Después recorro de nuevo la lista para mostrar los empleados que se les va a actualizar el salario por cobrar menos de 1500.

Aquí dejo el código, verás que para ordenar solo hay que invocar el método sort() que posee la clase ArrayList y la lista quedará ordenada según hemos indicado en la clase Empleado

Cualquier duda, pregunta.
Un saludo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import java.util.ArrayList;
 
public class ListaEmpledos {
 
	//Lista de empleados
	private static ArrayList<Empleado> empleados;
 
	public static void main(String[] args) {
		//Este método crea 15 empleados
		iniciarListado();
 
		//Mostramos listado original
		System.out.println("Listado inicial\n");
		for (Empleado emp: empleados)
			System.out.println(emp);
 
		//Ordenamos, gracias a la interface Comparable, no se necesitan parámetros y es automático
		empleados.sort(null);
 
		System.out.println("\nListado ordenado por salarios\n");
		for (Empleado emp: empleados)
			System.out.println(emp);
 
		//Actualizamos salarios inferiores a 1500
		System.out.println("\nEmpleados con sueldos inferiores a 1500");
		for (Empleado emp: empleados)
			if (emp.getSalario() < 1500) {
				System.out.printf("%s %s --> %d€",
						emp.getNombre(), emp.getApellidos(), emp.getSalario());
				emp.setSalario(1500);
				System.out.println("\t >> Sueldo actualizado a 1500€");
			}
 
	}
 
	private static void iniciarListado() {
		empleados = new ArrayList<Empleado>(15);
		empleados.add(new Empleado("Sara", "Pelaez", "123456A", 2300));
		empleados.add(new Empleado("Javier", "Andrade", "246789B", 2300));
		empleados.add(new Empleado("Ana", "Conde", "893309G", 1450));
		empleados.add(new Empleado("Jesús", "Belchite", "209562H", 2500));
		empleados.add(new Empleado("Alicia", "López", "448866T", 2800));
		empleados.add(new Empleado("David", "Guardia", "229874U", 1300));
		empleados.add(new Empleado("Laura", "Juan", "839177G", 2700));
		empleados.add(new Empleado("Jorge", "Morales", "629665Z", 2150));
		empleados.add(new Empleado("Montse", "Brande", "209871S", 1900));
		empleados.add(new Empleado("Jose Manuel", "Gómez", "348075R", 2000));
		empleados.add(new Empleado("Sandra", "Cevallos", "832209V", 2300));
		empleados.add(new Empleado("Manuel", "Ruano", "097329K", 2550));
		empleados.add(new Empleado("Encarnación", "Guirado", "449623P", 2400));
		empleados.add(new Empleado("Enrico", "Sancho", "643290J", 1300));
		empleados.add(new Empleado("Rebeca", "Márquez", "569011L", 2800));
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar