Mostly, we come with the requirement to generate reports based input. If you are retreiving data from Database it easy to sort and generate required output. But If your objects alread add in to list how do sort the content based on input value.
Requirement : I have a Person class with the fields Name and Age. My requirement is I would like generate report to list out Person Details with sort functionalities based on input [ like name or age ].
Person.java
package com.becbe.personal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Person {
public String age;
public String name;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static Comparator<Person> getComparator(final String sortBy)
{
if("name".equals(sortBy)){
return new Comparator<Person>() {
public int compare(Person o1, Person o2) {
return o1.getName().compareTo(o2.getName());
}
};
}
else if("age".equals(sortBy))
{
return new Comparator<Person>() {
public int compare(Person o1, Person o2) {
return o1.getAge().compareTo(o2.getAge());
}
};
}
else {
throw new IllegalArgumentException("invalid sort field '" + sortBy + "'");
}
}
public static void main(String s[])
{
List<Person> personSummary=new ArrayList<Person>();
Person person1=new Person();
person1.setAge("25");
person1.setName("Thulasiram.P");
Person person2=new Person();
person2.setAge("15");
person2.setName("wrangler");
Person person3=new Person();
person3.setAge("29");
person3.setName("Alex");
personSummary.add(person1);
personSummary.add(person2);
personSummary.add(person3);
Collections.sort(personSummary,Person.getComparator("age"));
for(Person p : personSummary)
{
System.out.println("Name :" + p.getName() + " Age :" +p.getAge());
}
}
}
out put:Name :wrangler Age :15 Name :Thulasiram.P Age :25 Name :Alex Age :29
0 comments :
Post a Comment