Java - Ordenación alfabetica

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Ordenación alfabetica

Publicado por David (15 intervenciones) el 28/02/2018 10:46:03
Buenos días:

Tengo un problema que no soy capaz a resolver. Si lo hago desde el main lo consigo hacer, pero al trasladarlo al metodo que tiene que ir, me da una excepcion. persona.ordenaPorNombre();(este es el metodo que me da error). Necesito que desde ese metodo me ordene alfabeticamente los empleados, desde el main lo tengo hecho, pero al poner el codigo en el metodo no lo consigo.

A ver si alguien puede ayudarme.El ejercico esta distribuido en 3 clases

muchas gracias de antemano.

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
public class Programa {
 
    public static void main(String[] args) {
 
ListaEmpleados persona = new ListaEmpleados();
 
       persona.add(new Empleado("1","e",1000));
       persona.add(new Empleado("2","f",1000));
        System.out.println(persona.stream().
                sorted((o1, o2) -> o1.getNombre().
                compareTo(o2.getNombre())).
                collect(Collectors.toList()));
 
persona.ordenaPorNombre();
 
public class ListaEmpleados extends ArrayList<Empleado> {
 
    ArrayList<Empleado> persona ;
 
 
    public ListaEmpleados() {
    }
 
    public ArrayList<Empleado> getPersona() {
        return persona;
    }
 
    public void setPersona(ArrayList<Empleado> persona) {
        this.persona = persona;
    }
 
    public void ordenaPorNombre() {
 
        System.out.println(persona.stream().
                sorted((o1, o2) -> o1.getNombre().
                compareTo(o2.getNombre())).
                collect(Collectors.toList()));
    }
 
 
public class Empleado {
    private String nif;
    private String nombre;
    private double sueldo;
 
    public Empleado(String nif, String nombre, double sueldo) {
        this.nif = nif;
        this.nombre = nombre;
        this.sueldo = sueldo;
    }
 
    public Empleado() {
    }
 
    public String getNif() {
        return nif;
    }
 
    public void setNif(String nif) {
        this.nif = nif;
    }
 
    public String getNombre() {
        return nombre;
    }
 
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
 
    public double getSueldo() {
        return sueldo;
    }
 
    public void setSueldo(double sueldo) {
        this.sueldo = sueldo;
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 358
Bronce
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Ordenación alfabetica

Publicado por Andrés (340 intervenciones) el 01/03/2018 08:15:36
ListaEmpleados extiende ArrayList, ok
ListaEmpleados tiene un campo persona de tipo ArrayList. ¬¬ ok

En el main, el stream opera sobre: ListaEmpleados persona = new ListaEmpleados(); i. e persona
Cuando se invoca: persona.ordenaPorNombre(), este método actua sobre el campo persona de ListaEmpleado y en este punto el campo es null.

puedes solucionarlo con:

1
2
3
4
5
6
7
public void ordenaPorNombre() {
 
    System.out.println(this.stream().
    sorted((o1, o2) -> o1.getNombre().
    compareTo(o2.getNombre())).
    collect(Collectors.toList()));
}

Aún así, el diseño no me agrada, i. e. extender de ArrayList y además tener un campo ArrayList, como se demuestra en este ejemplo, es causa de error. Sin embargo, no se cual era la intención original.
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
sin imagen de perfil
Val: 12
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Ordenación alfabetica

Publicado por Davi (15 intervenciones) el 01/03/2018 17:29:29
Muchas gracias por la respuesta,
Tenia que extender el arrayList<Empleado> pero sobra el ArrayList<Empleado> persona ; Son cosas que voy probando y a veces se me olvidan de quitar.
Al final tambien lo consegui asi tambien

this.sort((a, b) -> a.getNombre().compareTo(b.getNombre()) );

Pero muchas gracias Andrés.
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