In order to sort first by ID and if the Id’s are same then sort by name. Please follow the code
Example
package collections; import java.util.List; import java.util.ArrayList; import java.util.Collections; class Student implements Comparable<Student> { int ID; String name; char grade; public Student(int iD, String name, char grade) { super(); ID = iD; this.name = name; this.grade = grade; } @Override public String toString() { return "Student [ID=" + ID + ", name=" + name + ", grade=" + grade + "]"; } @Override public int compareTo(Student o) { int result = this.ID - o.ID; // Sorting by ID if (result == 0) { // if both the integer values are same, then sort by name result = this.name.compareTo(o.name); // comparing strings } return result; } } public class StudentSort { public static void main(String[] args) { List<Student> stu = new ArrayList<>(); stu.add(new Student(10, "General Motors", 'A')); stu.add(new Student(100, "Ferrari", 'B')); stu.add(new Student(5, "Mustang", 'C')); stu.add(new Student(5, "Ford", 'F')); System.out.println("Before"); printCollections(stu); Collections.sort(stu); System.out.println("After"); printCollections(stu); } private static void printCollections(List<Student> stu) { for (Student s : stu) System.out.println(s); } }
Output
Before Student [ID=10, name=General Motors, grade=A] Student [ID=100, name=Ferrari, grade=B] Student [ID=5, name=Mustang, grade=C] Student [ID=5, name=Ford, grade=F] After Student [ID=5, name=Ford, grade=F] Student [ID=5, name=Mustang, grade=C] Student [ID=10, name=General Motors, grade=A] Student [ID=100, name=Ferrari, grade=B]