• Viernes 8 de Noviembre de 2024, 15:34

Autor Tema:  Ordenar alfabeticamente campos de un vector  (Leído 4735 veces)

Hispasat88

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Ordenar alfabeticamente campos de un vector
« en: Domingo 11 de Enero de 2009, 01:11 »
0
Hola a todos,

En un programa, donde ya tengo definido un vector de 5 posiciones de la clase persona con los siguientes campos: nombre, apellido1, apellido2, edad, domicilio, tengo que ordenar alfabeticamente las personas, por el siguiente orden:apellido1, apellido2, nombre. La verdad que habia pensado en recorrer el vector e ir intercambiando porsiciones, pero no se hacer el metodo que compare, oviando mayusculas y minusculas, los dos campos. Evidentemente, es para un programa muy sencillo, por lo que no puedo (ya ves tu la gracia) usar el metodo sort.



Gracias de antemano.

dvinchi666

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Ordenar alfabeticamente campos de un vector
« Respuesta #1 en: Domingo 11 de Enero de 2009, 22:37 »
0
:hola:
Kreo ke esto Funcionaria...    

 :lol:

Persona.java  
Código: Text
  1. public class Persona {
  2.  
  3.     private StringBuffer nombre;
  4.     private StringBuffer apellido1;
  5.     private StringBuffer apellido2;
  6.     private StringBuffer domicilio;
  7.     private int edad;
  8.  
  9.     public Persona(String nombre, String apellido1, String apellido2, int edad, String domicilio) {
  10.         this.nombre = new StringBuffer(nombre);
  11.         this.apellido1 = new StringBuffer(apellido1);
  12.         this.apellido2 = new StringBuffer(apellido2);
  13.         this.edad = new Integer(edad);
  14.         this.domicilio = new StringBuffer(domicilio);
  15.     }
  16.  
  17.     public StringBuffer getApellido1() {
  18.         return apellido1;
  19.     }
  20.  
  21.     public StringBuffer getApellido2() {
  22.         return apellido2;
  23.     }
  24.  
  25.     public StringBuffer getDomicilio() {
  26.         return domicilio;
  27.     }
  28.  
  29.     public int getEdad() {
  30.         return edad;
  31.     }
  32.  
  33.     public StringBuffer getNombre() {
  34.         return nombre;
  35.     }
  36.  
  37.     public void setApellido1(StringBuffer apellido1) {
  38.         this.apellido1 = apellido1;
  39.     }
  40.  
  41.     public void setApellido2(StringBuffer apellido2) {
  42.         this.apellido2 = apellido2;
  43.     }
  44.  
  45.     public void setDomicilio(StringBuffer domicilio) {
  46.         this.domicilio = domicilio;
  47.     }
  48.  
  49.     public void setEdad(int edad) {
  50.         this.edad = edad;
  51.     }
  52.  
  53.     public void setNombre(StringBuffer nombre) {
  54.         this.nombre = nombre;
  55.     }
  56. }
  57.  
  58.  
  59.  

Vector_Personas.java  
Código: Text
  1. import java.util.*;
  2.  
  3. public class Vector_Personas {
  4.  
  5.     public static void intercambia(Vector<Persona> vp, int i) {
  6.         Persona tmp = vp.get(i);
  7.         vp.setElementAt(vp.get(i + 1), i);
  8.         vp.setElementAt(tmp, i + 1);
  9.     }
  10.  
  11.     public static void sort_apellido1(Vector<Persona> vp) {
  12.         Character pc1;
  13.         Character pc2;
  14.         for (int j = 1; j < vp.size(); j++) {
  15.             for (int i = 0; i < vp.size() - j; i++) {
  16.                 pc1 = Character.toLowerCase(new Character(vp.get(i).getApellido1().charAt(0)));
  17.                 pc2 = Character.toLowerCase(new Character(vp.get(i + 1).getApellido1().charAt(0)));
  18.                 if (Character.getNumericValue(pc1) > Character.getNumericValue(pc2)) {
  19.                     intercambia(vp, i);
  20.                 }
  21.             }
  22.         }
  23.     }
  24.  
  25.     public static void sort_nombre(Vector<Persona> vp) {
  26.         Character pc1;
  27.         Character pc2;
  28.         for (int j = 1; j < vp.size(); j++) {
  29.             for (int i = 0; i < vp.size() - j; i++) {
  30.                 pc1 = Character.toLowerCase(new Character(vp.get(i).getNombre().charAt(0)));
  31.                 pc2 = Character.toLowerCase(new Character(vp.get(i + 1).getNombre().charAt(0)));
  32.                 if (Character.getNumericValue(pc1) > Character.getNumericValue(pc2)) {
  33.                     intercambia(vp, i);
  34.                 }
  35.             }
  36.         }
  37.     }
  38.  
  39.     public static void sort_edad(Vector<Persona> vp) {
  40.         int pc1;
  41.         int pc2;
  42.         for (int j = 1; j < vp.size(); j++) {
  43.             for (int i = 0; i < vp.size() - j; i++) {
  44.                 pc1 = vp.get(i).getEdad();
  45.                 pc2 = vp.get(i + 1).getEdad();
  46.                 if (pc1 > pc2) {
  47.                     intercambia(vp, i);
  48.                 }
  49.             }
  50.         }
  51.     }
  52.  
  53.     public static void mostrar(Vector<Persona> vp) {
  54.         for (Enumeration it = vp.elements(); it.hasMoreElements();) {
  55.             Persona tmpperson = (Persona) it.nextElement();
  56.             System.out.print("  " + tmpperson.getNombre());
  57.             System.out.print("  " + tmpperson.getApellido1());
  58.             System.out.print("  " + tmpperson.getApellido2());
  59.             System.out.print("  " + tmpperson.getEdad());
  60.             System.out.println("");
  61.         }
  62.     }
  63.  
  64.     public static void main(String[] args) {
  65.         Vector<Persona> vp = new Vector<Persona>();
  66.  
  67.         //Estos datos se podrian Obtener de BD , files, etc.....
  68.         vp.add(new Persona("James", "Livingston", "", 22, "Italia"));
  69.         vp.add(new Persona("Jonathan", "Matthew", "", 16, "Madrid"));
  70.         vp.add(new Persona("Colin", "Walters", "", 25, "Suiza"));
  71.         vp.add(new Persona("Bastien", "Nocera", "", 30, "Mexico"));
  72.     vp.add(new Persona("Jose Manuel", "Vazquez", "Castro", 22, "Estado de Mexico - d.vinchi666@gmail.com"));
  73.  
  74.         System.out.println("Antes de Ordenar");
  75.         mostrar(vp);
  76.         System.out.println("nnn");
  77.  
  78.         sort_nombre(vp);
  79.         sort_apellido1(vp);
  80.         sort_edad(vp);
  81.  
  82.         System.out.println("Despues de Ordenar");
  83.         mostrar(vp);
  84.  
  85.     }
  86. }
  87.  
  88.  
  89.  

SFRJ

  • Miembro MUY activo
  • ***
  • Mensajes: 115
    • Ver Perfil
Re: Ordenar alfabeticamente campos de un vector
« Respuesta #2 en: Miércoles 4 de Febrero de 2009, 17:30 »
0
Las variables primitivas de tipo char en Java tambien tienen un valor de tipo int he leido yo en algun libro, y creo que si cuanto menor sea el valor int de cada caracter entonces, quiere decir que esta antes en el alfabeto.Tengo poraj un pequeno ejemplo de la uni del ano pasado en donde hizimos un ejemplo muy parecido, si lo encuentro subo el codigo.
Un saludo

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Ordenar alfabeticamente campos de un vector
« Respuesta #3 en: Viernes 6 de Febrero de 2009, 17:37 »
0
dvinchi666, intenta dar pistas para la resolución del problema y no postear el código. Esto es lo que por aquí llamamos "hacer la tarea"  :P

Hispasat88

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Ordenar alfabeticamente campos de un vector
« Respuesta #4 en: Viernes 6 de Febrero de 2009, 18:43 »
0
:huh:  :huh:  :huh:  :huh:  :huh:  :huh:  :huh:  :huh:  :huh:  :huh:  :huh:  :huh: