2013-04-01 6 views
-2
import java.util.ArrayList; 
import java.util.*; 

class Employee1 implements Comparable<Employee1> { 
    int empno; 

    String name; 
    Employee1(int i,String j) { 
     empno=i; 
     name=j; 
    } 

    public int compareTo(Employee1 e1) { 
     Employee1 e2=this; 
     Integer i1=e1.empno; 
     Integer i2=e2.empno; 
     return i1.compareTo(i2); 
    } 
} 

public class Employee { 
    public static void display(ArrayList<Employee1> i) { 
     for(Employee1 o:i){ 
      System.out.println(o.empno); 
     } 
    } 

    public static void main(String[] args) { 
     ArrayList<Employee1> ob=new ArrayList<Employee1>(); 
     Employee1 e1=new Employee1(1001,"A"); 
     Employee1 e2=new Employee1(1002,"B"); 
     ob.add(e2); 
     ob.add(e1); 
     Collections.sort(ob); 
     display(ob); 
    } 
} 

La sortie doit être 1001 1002 mais la sortie est 1002 1001.java ... basé sur Collections

Tout d'abord je suis passé l'objet e2 avec empno à la liste, puis e1 avec empno de 1001

En raison de la méthode compareTo dans Employee1 - e1.compareTo(e2); devrait être le même que 1001.compareTo(1002); Alors, pourquoi sont-ils montrent au mauvais commande?

+0

ok..Andremoniy ... c'est bien ... S'il vous plaît dites-moi le flux de ..... – vinod

+0

pourquoi utilisez-vous autant de points? c'est difficile de connecter les points de cette façon :) – ant

+0

flux de l'instruction .... return i1.compareTo (i2); avec les objets ..e1 et e2 .. ?? – vinod

Répondre

1

changement

return i1.compareTo(i2); 

à

return -i1.compareTo(i2); 

ou

return i2.compareTo(i1); 
+0

oui je l'ai eu ... si c'est encore ... return i1.compareTo (i1) .. puis après avoir passé les objets ..it devient 1001.compareTo (1002); droite? – vinod

0

Je pense que votre code est mal écrit.

Voilà comment la méthode doit être codé:

public int compareTo(Employee1 other) { 
    return this.empno.compareTo(other.empno); 
}