2012-07-25 31 views
0

刪除重複的對象我有一個Java類從ArrayList中

class Students{ 
    private String fName; 
    private String lName; 
    private String uName; 


    public Students(String fName, String lName, String uName) { 
      this.fName = fName; 
      this.lName = lName; 
      this.uName = uName; 
    }  

    public String getuName() { 
     return uName; 
    } 
    public void setuName(String uName) { 
     this.uName = uName; 
    } 
    public String getfName() { 
     return fName; 
    } 
    public void setfName(String fName) { 
     this.fName = fName; 
    } 
    public String getlName() { 
     return lName; 
    } 
    public void setlName(String lName) { 
     this.lName = lName; 
    } 

} 

現在我必須爲創建的對象;

Students students1 = new Students("har","mat","harmat"); 
    Students students2 = new Students("pan","son","panson"); 
    Students students3 = new Students("yogi","jos","yogijos"); 

    Students students4 = new Students("har","mat","harmat"); 
    Students students5 = new Students("pan","son","harmat"); 
    Students students6 = new Students("yogi","jos","someotherUName"); 
    Students students7 = new Students("yogi","jos","someotherUName2"); 

現在,所有這些對象加入到combinedList

List combinedList = new ArrayList<SchoolStudents>(); 

我想從基於以下標準這combinedList刪除重複的對象; 如果fName相同或者uName相同。

+0

[數組列表中查找重複的值]的可能重複(http://stackoverflow.com/questions/7281352/finding-duplicate-values-in-arraylist) – 2012-07-25 14:13:52

+0

然後,多個副本的http://計算器.com/questions/4778260/how-to-remove-arraylist-duplicate-values,http://stackoverflow.com/questions/9962082/prevent-duplicate-entries-in-arraylist,http://stackoverflow.com/questions/5181821/would-like-to-avoid-duplicate-entries-in-a-arraylist,http://stackoverflow.com/questions/5754592/finding-index-of-duplicate-values-in-an-arraylist,http ://sackoverflow.com/questions/5503646/find-duplicate-objects-in-an-java-arraylist – 2012-07-25 14:14:22

+0

作業?你試過什麼了?提示:使用可比較的(),也許設置 – maasg 2012-07-25 14:14:41

回答

4

如果這是確定兩名學生是否平等的一般標準,那麼您可以在班級中覆蓋equalshashcode,以根據您的標準讓2名學生平等。

然後,您可以將學生添加到組(通常是HashSet,它會自動刪除重複的。

1

商店他們在建設一個Set(如TreeSet),並提供一個ComparatorSet那(假設複製的定義在學生的外部,例如它在不同的時間意味着不同的事物,如果它是學生的固有的,那麼@assylias答案更有意義)

+0

你能否提供任何參考例子... – testndtv 2012-07-25 16:57:51

1

如果您需要一個唯一的列表,我會建議使用List界面中的任何內容。你會使用Set

覆蓋,hashCode()和你Students類的equals()方法

1

建議落實在學生類equals()hashCode()並使用HashSet強制唯一性的好。

0
public List<User> removeDuplicateFromList(List<User> list){ 
    int s=0; 
    List<User> users=new ArrayList<User>(); 
    for(User us1 :list){ 
     for(User us2:users){ 
     if(us1.getIdUser()==us2.getIdUser()){ 
      s=1; 
     }else{ 
      s=0; 
     } 

     } if(s==0){ 
      users.add(us1); 
     } 

    } 
    return users; 
}