Java method for sorting list elements

  • 2020-04-01 04:08:04
  • OfStack

The List implementations defined in the Java Collection Framework are Vector, ArrayList, and LinkedList. These collections provide index access to groups of objects. They provide support for adding and removing elements. However, they do not have built-in element sorting support.
You can sort the List elements using the sort() method in the java.util.collections class. You can either pass a List object to a method or a List and a Comparator. If all the elements in the list are of the same type and the class implements the Comparable interface, you can simply call collections.sort (). If the class does not implement Comparator, you can also pass a Comparator to the method sort() to sort. If you don't want to sort in the default sort order, you can also pass a Comparator to the method sort() to sort.

1. The object being compared implements the 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 getId() { 
  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. Using 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 the List element (Commons -beanutils)
The commons-beanutils class library has a BeanComparator class that can be used to sort javabeans. But this class can sort only one attribute at a time. Here's a simple example of sorting multiple properties of javabeans using the BeanComparator implementation:


import org.apache.commons.beanutils.BeanComparator;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
 

@SuppressWarnings({"unchecked"})
public class ListSorter {
 
 
 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 BeanComparator(property);
     int result = c.compare(o1, o2);
     if (result != 0) {
      return result;
     }
    }
    return 0;
   }
  });
 }
}


Related articles: