Восходящий и Нисходящий порядок в одной программе с использованием Java - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу отсортировать данные по паре id и меток.Идентификатор должен быть в порядке возрастания, а метки должны быть в порядке убывания, вот мой код:

ArrayList<Student> al=new ArrayList<Student>();
    al.add(new Student(1,"dg",58));
    al.add(new Student(2,"dg",48));
    al.add(new Student(1,"dg",98));
    al.add(new Student(2,"dg",68));
    al.add(new Student(1,"dg",38));
    al.add(new Student(2,"dg",28));
    al.add(new Student(2,"dg",90));    

выводится как:

1 dg 98  
1 dg 58  
1 dg 38  
2 dg 90  
2 dg 68  
2 dg 48  
2 dg 28  

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Попробуйте это

 Collections.sort(al,(s1,s2)->{

            return s1.id<s2.id?-1:s1.id>s2.id?1:s1.marks>s2.marks?-1:0;
        });
        al.forEach(p->{
            System.out.println(p);
        });
0 голосов
/ 05 декабря 2018

Вы должны реализовать Comparable для класса Student или отсортировать его напрямую, используя пользовательский Comparator:

Comparator<Student> comparator = Comparator
    .comparing(Student::getId)                            // First ID in ascending order
    .thenComparing(Comparator.comparing(Student::getMark) // Then mark 
                             .reversed());                // ... but in descending order

al.sort(comparator);                                      // Here is the sort performed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...