Aver si me podeis ayudar con esta práctica.
Tengo que dar de alta unos empleados y tal. Tengo una clase llamada empleados que contiene los datos del empleado con su tipico set y get. Algo asi es el contructor:
Código PHP:
public Empleados(String codigo, String password, String nombre){
this.codigo=codigo;
this.password=password;
this.nombre=nombre;
}
Código PHP:
private static ArrayList<Empleados> empleados = new ArrayList<Empleados>();
private static Empleados empleobj;
public static boolean altaEmpleados(Empleados empleobj) {
if (!empleados.contains(empleobj)) {
empleados.add(empleobj);
return true;
} else {
return false;
}
}
//consulta persona por la posición dentro del ArrayList
public static Empleados consultaEmpleados(int indice) {
empleobj = empleados.get(indice);
return empleobj;
}
//Consulta persona usuario devolucion posicion
public static Empleados consultaPersonaPorUsuario(String usuario) {
//Comparador para ordenar las personas por su código
Comparator CodigoComp = new Comparator() {
public int compare(Object o1, Object o2) {
Empleados e1 = (Empleados) o1;
Empleados e2 = (Empleados) o2;
return e1.getCodigo().compareTo(e2.getCodigo());
}
};
//Ordenamos el array
Collections.sort(empleados, CodigoComp);
/*//creamos una persona con el dni a buscar
Comparator NomPerComp = new Comparator() {
public int compare(Object o1, Object o2) {
Empleados e1 = (Empleados) o1;
Empleados e2 = (Empleados) o2;
return e1.getCodigo().compareTo(e2.getCodigo());
}
};
//Ordenamos el array
Collections.sort(empleados, NomPerComp);*/
//creamos una persona con el nombre a buscar
Empleados e = new Empleados();
e.setNombre(usuario);
int pos = Collections.binarySearch(empleados, e, CodigoComp);
if (pos >= 0) {
empleobj = empleados.get(pos);
} else {
empleobj = null;
}
return empleobj;
}
}
Tengo un main de prueba para ver que funciona las cosas:
añado 2 empleados al Arraylist y tal, todo bien pero al usar el metodo de buscar que me devuelve la posicion del empleado me sale este error:
Exception in thread "main" java.lang.NullPointerException
at java.lang.String.compareTo(String.java:1139)
at proyectoextraordinario.UtilEmpleados$2.compare(Uti lEmpleados.java:74)
at java.util.Collections.indexedBinarySearch(Collecti ons.java:377)
at java.util.Collections.binarySearch(Collections.jav a:365)
at proyectoextraordinario.UtilEmpleados.consultaPerso naPorUsuario(UtilEmpleados.java:94)
at proyectoextraordinario.Prueba.main(Prueba.java:55)
Java Result: 1
Lo invoco asi:
System.out.println(UtilEmpleados.consultaPersonaPo rUsuario(us));
Donde us es un objeto empleado.
Que estoy haciendo mal?