List implementations defined in the Java Collection Framework include Vector, ArrayList and LinkedList. These collections provide index access to object groups. They provide support for adding and removing elements. However, they do not have built-in element sorting support.
You can sort List elements using the sort() method in the java.util.Collections class. You can either pass a List object to the method, or pass a List and a Comparator. If all the elements in the list are classes of the same type, and this class implements the Comparable interface, you can simply call Collections.sort(). If this class does not implement Comparator, you can also pass a Comparator into the method sort() to sort. If you do not want to sort using the default classification order, you can also pass a Comparator into the method sort() to sort.
1. Comparable objects implement Comparable interface
public class Student implements Comparable { private int id; private int age; private String name; public Student(int id){ this.id=id; } public int g etId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public static void main(String args[]){ List<Student> list=new ArrayList<Student>(); for(int i=1000;i>0;i--){ list. add(new Student(i)); } Collections.sort(list); for(Student s: list){ System.out.println(s.getId()); } } public int compareTo(Object o) { if( o instanceof Student){ Student s=(Student)o; if(this.id>s.id){ return 1; } else{ return 0; } } return -1; } }
2.Use Collections.sort(Object o,Comparator c)
public class JiaMenuComparator implements Comparator{ public int compare(Object o1, Object o2) { if(null!=o1&&null!=o2) { JiaMenu menu1=(JiaMenu)o1 ; JiaMenu menu2=(JiaMenu)o2; if(menu1.getId( )<menu2.getId()){ return 1; }else { return 0; } } return 0; } }
3. Sort multiple attributes in List element (using commons-beanutils)
The commons-beanutils class library has a BeanComparator class that can be used to sort JavaBeans. But this class can only sort one attribute at a time. Here is an example of using BeanComparator to sort multiple properties of JavaBeans, which is very simple:
import org.apache.commons.beanutils.BeanComparator;import java.util.Collections;import java.util.Comparator;import java.util.List; /** * For List elements Classes that sort multiple attributes*/@ SuppressWarnings({"unchecked"})public class ListSorter { /** * Multiple attributes of List element are sorted. For example, ListSorter.sort(list, "name", "age"), first sort by * name attribute, and elements with the same name are sorted by the age attribute. * * @param list Contains the List of elements to be sorted * @param properties properties to be sorted. The previous values have high priority. */ public static <V> void sort(List<V> list, final String... properties) { Collections.sort(list, new Comparator<V>() { public int compare(V o1, V o2) { if (o1 == null && o2 == null) return 0; if (o1 == null) return -1; if (o2 == null) return 1; for (String property : properties) { Comparator c = new BeanCompar ator(property ); int result = c.compare(o1, o2); if (result != 0) { return result; } } return 0; } } }); }}