2016-06-23 5 views
0

Мне нужно отсортировать 3 объекта, которые содержат два целых числа и 1 строку, мой вопрос, так как я новичок в java, как я могу вызвать объект в методе, это мой код, так что far: Так что я пытаюсь сделать, чтобы отсортировать все 3 объекта в порядке возрастания, по возрасту, имени, общей оценке, как я могу назвать все из них, чтобы я мог сортировать? или если я делаю это неправильно, какая альтернатива? Мне нужно заранее использовать список и 3 объекта.Сортировка целых чисел и строк Java

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Collections; 
import java.util.List; 

public class Student { 

    int age; 
    int generalGrade; 
    String firstName; 
    String lastName; 

    public Student(int age, String firstName, String lastName, int generalGrade) { 
     this.age = age; 
     this.generalGrade = generalGrade; 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    public static void main (String[] args) { 

     Student myStudent = new Student(19, "A", "X", 100); 
     Student myStudent1 = new Student(20, "B", "P", 98); 
     Student myStudent2 = new Student(19, "C", "N", 70); 

     Age(myStudent); 


    } 

    public void Age(int[] age) { 

     List studentAge = new ArrayList(Arrays.asList(age)); 
     System.out.println("List values before sort " + studentAge); 
     Collections.sort(studentAge); 
     System.out.println("List value after sort: " + studentAge); 
    }} 
+0

Напишите пользовательский компаратор, а затем Collections.sort, используя этот компаратор – Sanjeev

ответ

0

Вы должны использовать интерфейсы Comparable или Comparator. См. Эту ссылку о том, как их использовать. http://howtodoinjava.com/search-sort/when-to-use-comparable-and-comparator-interfaces-in-java/

Изучите статью, а затем попробуйте, а затем задайте вопросы здесь. Если у вас возникли проблемы или сомнения.

+0

Большое спасибо! –

0

Я сделал это с помощью этого руководства: http://howtodoinjava.com/search-sort/when-to-use-comparable-and-comparator-interfaces-in-java/.

Это как мой главный выглядит, и я создал 4 других классов, реализующий Сравнить

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

public class Main { 
    public static void main(String[] args) { 


     Student student1 = new Student(19, "A", "X", 100); 
     Student student2 = new Student(20, "B", "P", 98); 
     Student student3 = new Student(19, "C", "N", 70); 

     List<Student> students = new ArrayList<Student>(); 
     students.add(student1); 
     students.add(student2); 
     students.add(student3); 

     Collections.sort(students); 
     System.out.println("Sorted students " + students); 

     System.out.println(" "); 
     Collections.sort(students, new NameSort()); 
     System.out.println("Sort by name " + students); 

     System.out.println(" "); 
     Collections.sort(students, new AgeSort()); 
     System.out.println("Sort by age " + students); 

     System.out.println(" "); 
     Collections.sort(students, new SortGrade()); 
     System.out.println("Sort by General Grade " + students); 
     System.out.println(""); 
     System.out.println("Decreasing order"); 
     System.out.println(""); 

     Collections.sort(students, Collections.reverseOrder(new NameSort())); 
     System.out.println("Sort by name " + students); 
     System.out.println(""); 
     Collections.sort(students, Collections.reverseOrder(new AgeSort())); 
     System.out.println("Sort by age " + students); 
     System.out.println(""); 
     Collections.sort(students, Collections.reverseOrder(new SortGrade())); 
     System.out.println("Sort by General grade " + students); 

    } 
} 
0

Опция, чтобы сделать ваш Student класс в Comparable<T> реализации:

public class Student implements Comparable<Student> { 

    // your code... 

    @Override 
    public int compareTo(Student student){ 
     // your sorting logic... 
    } 

} 

Этот путь Collections.sort() будет использовать вашу логику для сортировки списка.

Если ваш класс не может реализовать Comparable<T>, вы можете реализовать пользовательский Comparator<T> и использовать эту версию метода Collections.sort().