2016-11-29 6 views
1

У меня есть массивList, содержащий studentId, имя и семестрNo из немногих студентов. Есть записи с одинаковым номером studentId, но с другим семестром. Мне пришлось удалить дубликаты из списка в соответствии с studentId, и вывод должен быть в порядке возрастания семестра. Чтобы удалить дубликаты, я применил сопоставимые и деревья, чтобы проверить, были ли идентификаторы одинаковыми. Моя проблема заключается в том, как сортировать деревья по семестровому номеру.несколько переопределений в treeet java

public class Student implements Comparable<Student>{ 


private Integer studentId; 
private String studentName; 
private Integer studentSemester; 


@Override 
public int compareTo(Student o) { 
    return o.getStudentId().compareTo(this.getStudentId()); 
} 

ответ

1

Сравнить studentId первый тогда studentSemester-х

public class Student implements Comparable<Student> { 

    private int studentId; 
    private String studentName; 
    private int studentSemester; 

    public Student(int sId, String sName, int sSemester) { 
     this.studentId = sId; 
     this.studentName = sName; 
     this.studentSemester = sSemester; 
    } 

    public int getStudentId() { 
     return studentId; 
    } 

    public void setStudentId(int studentId) { 
     this.studentId = studentId; 
    } 

    public String getStudentName() { 
     return studentName; 
    } 

    public void setStudentName(String studentName) { 
     this.studentName = studentName; 
    } 

    public int getStudentSemester() { 
     return studentSemester; 
    } 

    public void setStudentSemester(int studentSemester) { 
     this.studentSemester = studentSemester; 
    } 

    @Override 
    public String toString() { 
     return "[" + studentId + ", " + studentName + ", " + studentSemester + "]"; 
    } 

    @Override 
    public int compareTo(Student that) { 
     if(this.getStudentId() == that.getStudentId()) 
      return 0; 
     if(this.getStudentSemester() > that.getStudentSemester()) 
      return 1; 
     if(this.getStudentSemester() < that.getStudentSemester()) 
      return -1; 
     return 0; 
    } 

} 

Вот класс Test

import java.util.ArrayList; 
import java.util.List; 
import java.util.TreeSet; 

public class MultipleOverrides { 

    public static void main(String args[]) { 

     Student s1 = new Student(1, "A", 1); 
     Student s2 = new Student(1, "A", 2); 
     Student s3 = new Student(1, "A", 3); 
     Student s4 = new Student(2, "B", 1); 
     Student s5 = new Student(2, "B", 2); 
     Student s6 = new Student(2, "B", 3); 
     Student s7 = new Student(3, "C", 1); 
     Student s8 = new Student(3, "C", 2); 
     Student s9 = new Student(3, "C", 3); 

     List<Student> students = new ArrayList<>(); 
     students.add(s1); 
     students.add(s2); 
     students.add(s3); 
     students.add(s4); 
     students.add(s5); 
     students.add(s6); 
     students.add(s7); 
     students.add(s8); 
     students.add(s9); 

     System.out.println("All students before sorting : " + students); 

     TreeSet<Student> sortedStudents = new TreeSet<>(); 
     sortedStudents.addAll(students); 
     System.out.println("All students after sorting : " + sortedStudents); 

    } 

} 

Выход:

Все студенты до сортировки: [[1, А, 1], [1, A, 2], [1, A, 3], [2, B, 1], [2, B, 2], [2, B, 3], [3, C, 1], [3, C, 2], [3, C, 3]]

Все ученики после сортировки: [[1, A, 1], [2, B, 2], [3, C, 3]]

+0

В конце перезаписывания метод должен возвращать 1 вместо 0, так как 0 не позволит добавить к дереву другой объект с тем же семестром. –