Как отсортировать переменные каждого элемента в Arraylist? [Дубликат]

  UPDATE `table1` AS` dest`, (SELECT * FROM `table2` WHERE` id` = x) AS `src` SET` dest`.`col1` = `src`.`col1` WHERE  `dest`.`id` = x;   

Надеюсь, это сработает для вас.

2
задан Eclayaz 18 November 2013 в 16:45
поделиться

1 ответ

public class Student implements Comparable<Student>, Serializable {
    private int registrationNumber;
    private int coursework1;
    private int coursework2;
    private int finalExam;
    private int totalScore;

    public Student(int registrationNumber, int coursework1, 
                             int coursework2, int finalExam) {
        this.registrationNumber = registrationNumber;
        this.coursework1 = coursework1;
        this.coursework2 = coursework2;
        this.finalExam = finalExam;
        totalScore = coursework1 + coursework2 + finalExam;
    }

    ...
    // all you getters and setters
    ...



    public int compareTo(Student s){
        if (this.totalScore > s.totalScore)
            return 1;
        else if (this.totalScore == s.totalScore)
            return 0;
        else 
            return -1;
    }
}

Теперь все настроено для использования метода Collections.sort()

ArrayList<Student> students = new ArrayList<Student>();

Student student1 = new Student(1, 90, 70, 100);
Student student1 = new Student(2, 85, 43, 90);
Student student1 = new Student(3, 67, 70, 80);

students.add(student1);
students.add(student2);
students.add(student3);

Collections.sort(students);
// Magic!

Редактирование: использование анонимного компаратора

public class ComparatorPractice{
    public static void main(String[] args){
        ArrayList<Student> students = new ArrayList<Student>();

        Student student1 = new Student(1, 90, 70, 100);
        Student student1 = new Student(2, 85, 43, 90);
        Student student1 = new Student(3, 67, 70, 80);

        students.add(student1);
        students.add(student2);
        students.add(student3);

       Collections.sort(students, new Comparator(){
           @Override
           public int compare(Object o1, Object o2){
               if (o1 instanceof Student && o2 instanceof Student){
                   if (o1.coursework1 > o2.coursework1)
                       return 1;
                   else if (o1.coursework1 == o2.coursework1)
                       return 0;
                   else
                        return -1;
               }
           }
       });

       System.out.println("Highest coursework1 mark is " 
                           + students.get(students.size()- 1).coursework1);

       Collections.sort(students, new Comparator(){
           @Override
           public int compare(Object o1, Object o2){
               if (o1 instanceof Student && o2 instanceof Student){
                   if (o1.coursework2 > o2.coursework2)
                       return 1;
                   else if (o1.coursework2 == o2.coursework2)
                       return 0;
                   else
                        return -1;
               }
           }
       });

       System.out.println("Highest coursework2 mark is " 
                           + students.get(students.size()- 1).coursework2);
    }
}

Просто сделайте то же самое для каждого компонента, который хотите сортировать. Если вы сделаете это так, не используя Comparable, вам не нужны compareTo() или implements Comparable в вашем классе Student.

2
ответ дан Paul Samsotha 15 August 2018 в 14:56
поделиться
  • 1
    Значит много .. Высоко цените – Eclayaz 18 November 2013 в 17:14
  • 2
    Я не уверен, как вы хотели, чтобы totalScore был рассчитан, так что просто сделайте расчет самостоятельно. – Paul Samsotha 18 November 2013 в 17:17
  • 3
    конечно, этого более чем достаточно! – Eclayaz 18 November 2013 в 17:21
  • 4
    Вы можете использовать сортировку компаратора для каждого компонента. Но помните, как только вы его сортируете, а затем сортируйте с другим компаратором, предыдущий вид больше не может быть получен. Поэтому после сортировки вы можете выполнить все свои действия, а затем завершить другой сортировку для другого компонента. См. Мое редактирование. Это сортирует мою работу1. Вы не можете сделать то же самое для всех других компонентов. Просто переключите classwork на что-то другое. – Paul Samsotha 19 November 2013 в 17:11
  • 5
    Не беспокойся. Надеюсь, вы что-то узнали! – Paul Samsotha 19 November 2013 в 20:01
Другие вопросы по тегам:

Похожие вопросы: