У меня есть список учеников с указанием их учителя, с которым они связались. ниже - студенческий боб.Сортировать список учеников на основе их учителя id
public class Student {
private Integer Id;
private String Name;
private Integer teacherId;
public Student(Integer empId, String empName, Integer teacherId) {
super();
this.empId = empId;
this.empName = empName;
this.teacherId = teacherId;
}
// setters getters
}
Сейчас в моем основном классе у меня есть список студентов с данными, как показано ниже.
public static void main(String[] args) {
int teacherId = 6;
List<Student> list = new ArrayList<Student>();
list.add(new Student(1002, "Kausik",4));
list.add(new Student(1004, "Tridibendu",6));
list.add(new Student(1007, "Ram",8));
list.add(new Student(1003, "Neeraj",6));
list.add(new Student(1009, "Manish",8));
list.add(new Student(1001, "Shyam",1));
// Sorting collection in ascending order based on teacher id
Collections.sort(list, new StudentComparator());
}
ниже мой класс учеников-компараторов. Может кто-нибудь, пожалуйста, помогите мне, что я пишу в моем методе сравнения, чтобы, если я передаю 2 в качестве идентификатора учителя, список должен быть отсортирован таким образом, чтобы все ученики, связанные с учителем id 2, должны быть сверху, а отдых должен быть внизу ,
Или есть другой способ, которым я могу это сделать в java?
public class StudentComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return o1.getTeacherId().compareTo(o2.getTeacherId());
}
}
Ниже приведено то, что я получаю.
Id: 1001, Name: Shyam, TeacherId: 1
Id: 1002, Name: Kausik, TeacherId: 4
Id: 1004, Name: Tridibendu, TeacherId: 6
Id: 1003, Name: Neeraj, TeacherId: 6
Id: 1007, Name: Ram, TeacherId: 8
Id: 1009, Name: Manish, TeacherId: 8
, но я хочу, выход на основе прошедшего учителя ид как parameter.Mean, если я прохожу 6 в качестве учителя ид тогда мой вывод должен быть ниже:
Id: 1004, Name: Tridibendu, TeacherId: 6
Id: 1003, Name: Neeraj, TeacherId: 6
Id: 1001, Name: Shyam, TeacherId: 1
Id: 1002, Name: Kausik, TeacherId: 4
Id: 1007, Name: Ram, TeacherId: 8
Id: 1009, Name: Manish, TeacherId: 8
так учитель имеет идентификатор в 6 должен быть вверху списка.
что проблема ..следующего коду кажется нормально! Что вы подразумеваете под 'что я пишу в методе сравнения? Пробовал ли вы печатать «Студенческий объект» в своем списке? Они должны быть отсортированы на основе 'teacherId' после использования следующего кода: ' Collections.sort (list, new StudentComparator()); ' – Abhishek
Я имею в виду сортировку на основе идентификатора учителя, переданного как параметр. Если я скажу, что сортировка по id учителя 6, то ниже должна быть выведена. студенты контактировали научить 6 должны быть на вершине Id: 1001 Имя: Shyam, TeacherId: 6 Id: 1002, Имя: Каусик, TeacherId: 6 Id: 1004, Имя: Tridibendu, TeacherId: 5 Id: 1003, Имя: Neeraj, TeacherId: 7 Id: 1007, Имя: Ram, TeacherId: 8 Id: 1009, Имя: Manish, TeacherId: 8 –
Как вы относите остальных к ученикам? Или они должны быть случайными. Итак, у вас есть ученики, связанные с TeacherID 6, сверху, где остальные? Должны ли 5 или 7 быть следующими, должны ли мы спускаться, или это не имеет значения? Нужно быть немного более конкретным. Кроме того, что вы пробовали до сих пор? – Draken