Home  >  Article  >  Java  >  Detailed explanation of method examples for sorting list elements in Java

Detailed explanation of method examples for sorting list elements in Java

怪我咯
怪我咯Original
2017-07-02 10:22:561511browse

This article mainly introduces the detailed explanation of the method of sorting list elements in Java. It is the basic knowledge of Getting Started with Java. Friends who need it can refer to it

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

1. The compared object 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. 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 elements (using commons-beanutils)
commons-beanutils There is a BeanComparator class in the class library, which can be used to sort JavaBeans. But this class can only sort one property at a time. The following is an example of using BeanComparator to sort multiple properties of JavaBean. It is very simple:

import org.apache.commons.beanutils.BeanComparator;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
 
/**
 * 对 List 元素的多个属性进行排序的类
 */
@SuppressWarnings({"unchecked"})
public class ListSorter {
 
 /**
  * List 元素的多个属性进行排序。例如 ListSorter.sort(list, "name", "age"),则先按
  * name 属性排序,name 相同的元素按 age 属性排序。
  *
  * @param list  包含要排序元素的 List
  * @param properties 要排序的属性。前面的值优先级高。
  */
 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;
   }
  });
 }
}

The above is the detailed content of Detailed explanation of method examples for sorting list elements in Java. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn