2015-04-05 84 views
0

如何從StudentList對象中刪除重複條目。這裏我們可以根據進入順序來識別學生是否重複。如何從數組列表中刪除重複條目

class Student 
{ 
    String name; 
    long phone; 
    String address; 
    boolean isActive; 
    Student(String name, long phone, String address, boolean isActive) 
    { 
    this.name = name; 
    this.phone = phone; 
    this.address = address; 
    this.isActive = isActive; 
    } 
} 

這是執行類。

class CollegeMgmt 
{ 
    public static void main(String s[]) 
    { 
    ArrayList<Student> studentList = new ArrayList<Student>(); 
    Student s1 = new Student("devid", 9898989898L, "Stainford d23", true); 
    studentList.add(s1); 
    Student s2 = new Student("sames", 9895555598L, "Stainford d23", true); 
    studentList.add(s2); 
    Student s3 = new Student("devid", 9898989898L, "Stainford d23", false); 
    studentList.add(s3); 
    Student s4 = new Student("devid", 9898989898L, "Stainford d23", false); 
    studentList.add(s4); 
    Student s5 = new Student("devid", 9898989898L, "Stainford d23", true); 
    studentList.add(s5); 
    } 
} 

我想知道哪種方法最好從studentList中刪除所有重複條目。 重複在這裏,如果兩個或兩個以上的條目是相同

Student s3 = new Student("devid", 9898989898L, "Stainford d23", false); 
    studentList.add(s1); 
    Student s4 = new Student("devid", 9898989898L, "Stainford d23", false); 
    studentList.add(s1); 

這是isActive位的代表,如果在我們的名單將繼續同一位我們的設置,然後那個對象是需要刪除。有s4對象應該刪除沒有其他對象應該刪除。

+0

他們顯示刪除字符串對象的重複項目,並且這種方式不能應用於上述類型的問題。使用內部和外部循環,我們可以刪除。但是我想知道有沒有其他方法? – 2015-04-05 18:15:38

+0

@VinaySharma這聽起來很像你問別人做你的功課。你是否真的認爲自己甚至沒有試圖自己解決你的任務就能學到更多東西? – GhostCat 2015-04-05 18:24:02

+0

不,這是不正確的,我已經做到了,但我認爲複雜性是很多O(2n),所以我想知道這種類型的問題的最佳解決方案。 – 2015-04-05 18:35:50

回答

3

你或許應該通過重寫StudentObject.equals(通過測試決定平等領域)開始。接下來,使用Set這將防止重複(例如LinkedHashSet,保留插入順序)。

+0

這裏有兩個屬性組合並定義學生是否重複,姓名和電話號碼 – 2015-04-05 18:17:32

+0

@VinaySharma好的,那麼首先你寫一個等號方法來測試'name'和'phone number'。 – 2015-04-05 18:18:15

+0

謝謝先生,但你能否再次考慮上述問題,對不起我做了一些修改。謝謝你的回覆 – 2015-04-05 18:53:21