2016-01-05 1 views
0

Le but de cette méthode est ici à bouillonner sorte selon l'ID d'une personneBubble genre Arraylist d'objets

cependant dans ce domaine:

if (al.get(i).compareTo(al.get(i+1)) > 0) 

il est dit: ne peut pas trouver le symbole - méthode compareTo (java .lang.Object)


C'est la personne de classe (pas très diablotin)////

public class Person implements java.io.Serializable 
{ 
    String personID; 
    String name; 
    byte dayDOB; 
    byte monthDOB; 
    short yearDOB; 
    String telNum; 
} 

C'est la méthode de tri:

public static void sort(ArrayList al) 
    { 
    Person p; 
    String temp; 
    boolean flag = true; 

    System.out.println("Database will be sorted acc to ID "); 
    System.out.println(); 


    while (flag = true) 
    { 
     flag = false; 

     for (int i=0;i<al.size()-1;i++)  
     { 
      p = (Person) al.get(i); 

      if (al.get(i).compareTo(al.get(i+1)) > 0) 
      { 
       temp = al.get(i); 
       al.set(i,al.get(i+1)); 
       al.set(i+1, temp); 
       flag = true; 
      } 
     } 
    } 
    } 

PS; Je suis un novice en ce qui concerne le code et j'ai déjà modifié ce code jusqu'à 7 heures déjà

+2

Avez-vous écrit une méthode compareTo() pour la classe Person? – TangledUpInBlue

+0

oh c'est pourquoi ... et comment ça se passe? –

+0

Vous devez comprendre http://www.tutorialspoint.com/java/java_using_comparator.htm – awsome

Répondre

0

Les objets sont dotés d'une méthode intégrée compareTo(), mais il est préférable de remplacer la valeur par défaut. See the java documentation for compareTo(). Cela devrait simplifier votre code un peu.

Votre classe Person devra implémenter Comparable et l'inclure dans la déclaration de classe. Vous pouvez alors écrire un ce quelque chose comme méthode compareTo():

public int compareTo(Person b) { 
    return this.name.compareTo(b.getName()); 
} 

Une méthode compareTo() doit retourner -1, 0 ou 1. Si vous appelez a.compareTo(b) dans votre classe principale, compareTo() devrait revenir à zéro si les objets sont triés à au même endroit (ie égal), -1 si l'objet a doit être trié avant l'objet b, ou 1 si l'objet a doit être trié après b.

Vous devrez décider ce qui constitue la même personne et comment les trier. Alphabétiquement basé sur le nom? Nom et identifiant? Quoi que ce soit pour votre programme.

+0

Juste une question, qu'est-ce que je écrire dans les paramètres (à côté de comparer)? –

+0

Dans la classe Person, ou lorsque vous appelez compareTo dans une autre classe? – TangledUpInBlue

+0

dans la classe de personne, je pense –