2013-04-01 64 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); 
    } 
} 

輸出應爲1001 1002,而輸出爲1002 1001java ...基於集合

首先我empno通過e2對象添加到列表,然後 e1與1001

empno由於Employee1compareTo方法 - e1.compareTo(e2);應儘可能1001.compareTo(1002);相同的,所以爲什麼他們在錯誤的顯示訂購?

+0

好.. Andremoniy ...多數民衆贊成在...請你告訴我的流量..... – vinod

+0

你爲什麼用這麼多點?其難以連接的方式:) – ant

+0

流的聲明....返回i1.compareTo(i2);與對象..e1和E2 .. ?? – vinod

回答

1

變化

return i1.compareTo(i2); 

return -i1.compareTo(i2); 

return i2.compareTo(i1); 
+0

是的,我得到了...如果它仍然是..返回i1.compareTo(i1)..然後傳遞對象後,它變成1001.compareTo(1002);對? – vinod

0

我認爲你的代碼寫得很糟糕。

這裏的方法應該如何進行編碼:

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