栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中对list元素进行排序的方法详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中对list元素进行排序的方法详解

在Java Collection framework中定义的List实现有Vector,ArrayList和linkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。
  你能够使用java.util.Collections类中的sort()方法对List元素进行排序。你既可以给方法传递一个List对象,也可以传递一个List和一个Comparator。如果列表中的元素全都是相同类型的类,并且这个类实现了Comparable接口,你可以简单的调用Collections.sort()。如果这个类没有实现Comparator,你也可以传递一个Comparator到方法sort()中,进行排序。如果你不想使用缺省的分类顺序进行排序,你同样可以传递一个Comparator到方法sort()中来进行排序。

1.比较的对象实现Comparable接口

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 list=new ArrayList(); 
  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.利用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()

3.对 List 元素中的多个属性进行排序(用到 commons-beanutils)
commons-beanutils 类库中有一个 BeanComparator 类,可以用来给 JavaBean 排序。但是这个类一次只能对一个属性排序。下面是一个利用 BeanComparator 实现对 JavaBean 的多个属性进行排序的例子,非常简单:

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  void sort(List list, final String... properties) {
  Collections.sort(list, new Comparator() {
   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;
   }
  });
 }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/151251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号