Create a Student class with name, id and age. Write a program that gets some students from user and then sorts by
- Ascending order of Name (Use Comparable)
- Descending order of Name
- Both age and name.(Use Comparator)
SOLUTION:
import java.util.*; public class ListExample { public static void main(String[] args){ Scanner input = new Scanner(System.in); //Creating list for Student class List< Student > list = new ArrayList< Student >(10); int i=0; do{ System.out.println("Please select an option:\n1:Add Student\n2:Asscending order of name\n3:Desecending order of name\n4:Both age and name\n5:Exit\n"); i=input.nextInt(); switch(i){ case 1: addStudent(list); break; case 2: sortAscending(list); break; case 3: sortDescending(list); break; case 4: sortBy(list); break; case 5: break; default: System.out.println("Invalid input!! Try again ..\n"); break; } }while(i!=5); }//End main method public static void addStudent(List< Student > temp){ Scanner input = new Scanner(System.in); float age=0; int id=0; String name; System.out.println("Please enter name:"); name=input.nextLine(); System.out.println("Please enter Age:"); age=input.nextFloat(); System.out.println("Please enter ID:"); id=input.nextInt(); //Creating object and adding to the list temp.add(new Student(name,id,age)); } public static void sortAscending(List< Student > temp) { //Copying the list and sorting List< Student > copy = temp; //Sorting Collections.sort(copy,new Student().new asc()); //Displaying System.out.printf("%-5s%-15s%-15s\n","ID","Name","Age"); for(Student st : copy){ System.out.printf("%-5d%-15s%-15.1f\n",st.id,st.name,st.age); } } public static void sortDescending(List< Student > temp){ //Copying the list and sorting List< Student > copy = temp; //Sorting Collections.sort(copy,new Student().new desc()); //Displaying System.out.printf("%-5s%-15s%-15s\n","ID","Name","Age"); for(Student st : copy){ System.out.printf("%-5d%-15s%-15.1f\n",st.id,st.name,st.age); } } public static void sortBy(List< Student > temp) { //Copying the list and sorting List< Student > copy = temp; //Sorting Collections.sort(copy,new Student().new asc()); Collections.sort(copy,new Student().new byage()); //Displaying System.out.printf("%-5s%-15s%-15s\n","ID","Name","Age"); for(Student st : copy){ System.out.printf("%-5d%-15s%-15.1f\n",st.id,st.name,st.age); } } } class Student { String name; int id; float age; //Constructor public Student(){ this("unnamed",0,0); } public Student(String name, int id, float age){ this.name=name; this.id=id; this.age=age; } public String toString() { return(String.format("%s %s %s",id, name, age)); } //Inner Class class asc implements Comparator< Student >{ public int compare(Student a, Student b) { return a.name.compareTo(b.name); } } //Inner Class class desc implements Comparator< Student >{ public int compare(Student a, Student b) { return b.name.compareTo(a.name); } } //Inner Class class byage implements Comparator< Student >{ public int compare(Student a, Student b) { if(a.age-b.age==0) return 0; return (a.age-b.age) > 0 ? 1:-1; } } }
No comments:
Post a Comment