`
silenceisall
  • 浏览: 31340 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论

用collection.sort()方法对list集合排序

阅读更多
第一种是list中的对象实现Comparable接口,如下:
/**
* 根据order对User排序
*/
public class User implements Comparable<User>{
    private String name;
    private Integer order;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getOrder() {
        return order;
    }
    public void setOrder(Integer order) {
        this.order = order;
    }
    public int compareTo(User arg0) {
        return this.getOrder().compareTo(arg0.getOrder());
    }
}
测试一下:
public class Test{

    public static void main(String[] args) {
        User user1 = new User();
        user1.setName("a");
        user1.setOrder(1);
        User user2 = new User();
        user2.setName("b");
        user2.setOrder(2);
        List<User> list = new ArrayList<User>();
        //此处add user2再add user1
        list.add(user2);
        list.add(user1);
        Collections.sort(list);
        for(User u : list){
            System.out.println(u.getName());
        }
    }
}
输出结果如下
a
b
第二种方法是根据Collections.sort重载方法来实现,例如:
/**
* 根据order对User排序
*/
public class User { //此处无需实现Comparable接口
    private String name;
    private Integer order;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getOrder() {
        return order;
    }
    public void setOrder(Integer order) {
        this.order = order;
    }
}
主类中这样写即可:
public class Test{
    public static void main(String[] args) {
        User user1 = new User();
        user1.setName("a");
        user1.setOrder(1);
        User user2 = new User();
        user2.setName("b");
        user2.setOrder(2);
        List<User> list = new ArrayList<User>();
        list.add(user2);
        list.add(user1);
       
        Collections.sort(list,new Comparator<User>(){
            public int compare(User arg0, User arg1) {
                return arg0.getOrder().compareTo(arg1.getOrder());
            }
        });
        for(User u : list){
            System.out.println(u.getName());
        }
    }
}
输出结果如下
a
b
前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁

多字段的场合:
Collections.sort(list,new Comparator<User>(){
            public int compare(User arg0, User arg1) {
//            第一次比较专业
                int i = arg0.getOrder().compareTo(arg1.getOrder());

//            如果专业相同则进行第二次比较
            if(i==0){
//                第二次比较
                int j=arg0.getXXX().compareTo(arg1.getXXX());
//                如果学制相同则返回按年龄排序
                if(j==0){
                    return arg0.getCCC().compareTo(arg1.getCCC());
                }
                return j;
            }
            return i;
            }
        });


以下是另外一个例子
package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Exmployee> arrayList  = new ArrayList<Exmployee>() ;
arrayList.add(new Exmployee("zengqiang",new Integer(5000))) ;
arrayList.add(new Exmployee("zengmin",new Integer(4000))) ;
arrayList.add(new Exmployee("liuxiaojuan",new Integer(4200))) ;
arrayList.add(new Exmployee("giuming",new Integer(2200))) ;
Collections.sort(arrayList, new Comparator<Exmployee>(){
public int compare(Exmployee arg0, Exmployee arg1) {
return  arg1.getSalary()-arg0.getSalary() ; //按照工资升序
//return  arg0.getSalary()-arg1.getSalary() ; 按照工资降序
//return arg0.getName().compareTo(arg1.getName()) ; 按照姓名升序
            }
});
for(Exmployee e:arrayList)
System.out.println(e.getName()+"'s salary is "+e.getSalary()) ;
}

}

class Exmployee {
public Exmployee(String name, int salary) {
this.name = name ;
this.salary = salary ;
}

private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getSalary() {
return salary;
}

public void setSalary(int salary) {
this.salary = salary;
}

private int salary;
}
分享到:
评论
1 楼 ……蚂蚁…… 2011-03-24  
不错  湖北的 顶

相关推荐

    java 使用Collections类对List的排序操作

    1. **自然排序**:如果 `List` 中的元素是实现了 `Comparable` 接口的对象,那么可以使用 `Collections.sort()` 方法进行自然排序。`Comparable` 接口定义了一个 `compareTo()` 方法,该方法用于比较对象之间的大小...

    11集合.rarjava 集合类

    java 集合类的排序主要是用Collections.sort方法,Collections和Collection是不一样的,前者是类,后者是接口,在这里,我主要是想说明它的sort方法的几种类型, 提示:实现接口的方法时,只需要比较两个数,大的返回1,...

    Java集合排序及java集合类详解(Collection、List、Map、Set)讲解.pdf

    对于List,可以使用Collections.sort()方法进行排序,对于Map,通常需要转换成List后再排序。例如,对于TreeMap,其内部已经按照键的自然顺序或比较器排序。 总结,Java集合框架提供了丰富的数据结构和操作,理解并...

    Java集合排序及java集合类详解(Collection、List、Map、Set)

    ### Java集合排序及java集合类详解(Collection、List、Map、Set) #### 集合框架概述 ##### 容器简介 在Java编程中,容器(Container)是指用来存储和管理对象的一种数据结构。随着应用程序复杂度的增加,简单地...

    Java集合排序及java集合类详解(Collection、List、Map、Set).pdf

    对于排序,List可以通过Collections.sort()方法进行排序,Map的键可以使用TreeMap来自动排序,而Set如需要排序,可以使用SortedSet接口的实现类,如TreeSet。 总之,Java集合框架是Java程序员必须掌握的基础知识,...

    Java集合Collection、List、Set、Map使用详解

    本文将深入解析Java集合中的Collection、List、Set和Map,包括它们的使用方法、实现原理以及如何进行排序。 ### 集合框架概述 1.1.1 容器简介 容器是Java集合框架的基础,它是一个可以存储多个对象的容器,提供了...

    Java集合排序及java集合类详解.pdf

    在文档《Java集合排序及java集合类详解.pdf》中,虽然由于OCR扫描的原因,内容存在一些文字错误和漏识别,但可以推断该文档详细讲解了Java集合类的各个接口以及实现类的特点、用法以及它们之间的区别,并且详细介绍...

    collection接口的静态方法

    `Collections.sort(List&lt;T&gt; list)`方法是`Collection`接口中最常用的方法之一,它用于对指定的`List`实例进行升序排序。该方法使用了快速排序算法或插入排序算法,具体取决于列表的大小。需要注意的是,只有当`List`...

    Java.util.Collection类的学习.pdf

    * 排序(Sort):使用sort方法可以根据元素的自然顺序对指定列表按升序进行排序。 * 混排(Shuffling):使用shuffle方法可以打乱在一个List中的任何排列的踪迹。 * 反转(Reverse):使用reverse方法可以根据元素的...

    第03章.java集合框架.ppt

    5. sort 方法:对集合中的元素进行排序。 集合框架的应用场景 集合框架的应用场景非常广泛,例如: 1. 数据存储:可以使用集合框架来存储大量的数据,例如新闻信息、学员信息等。 2. 算法实现:可以使用集合框架...

    Freemarker中遍历list集合实例

    Freemarker 中遍历 List 集合实例是指在 Freemarker 应用中遍历 List 集合获取需要的数据,并对需要的数据进行排序加工后呈现给用户。以下是 Freemarker 中遍历 List 集合实例的详细介绍: 一、 Freemarker 中 list...

    Java(Collection_List_Map_Set).rar_java集合类详解

    例如,对于List,可以使用Collections.sort()方法进行排序;对于Map,可以使用TreeMap,它会自动根据键的自然排序或提供的Comparator排序。 总结来说,Java集合框架提供了丰富的数据结构和操作,适用于各种场景。...

    Java集合排序及java集合类详解参照.pdf

    1. 对于List,可以使用Collections.sort()方法进行排序。 2. 对于Set,如TreeSet,它会自动根据元素的Comparable或Comparator进行排序。 3. 对于Map,如TreeMap,同样依赖于键的Comparable或Comparator。 总结来说...

    Java集合排序及java集合类详解

    1. 对于实现了`Comparable`接口的元素,如Integer、String等,可以直接使用`Collections.sort()`方法对List进行排序。 2. 对于不满足自然排序的元素,可以通过自定义`Comparator`并调用`Collections.sort(list, ...

    java collection framework

    - `Collections.sort()`: 对 List 进行排序。 - `Collections.reverse()`: 反转 List 的顺序。 - `Collections.shuffle()`: 打乱 List 的顺序。 - `Collections.max()` 和 `Collections.min()`: 获取 List 中的最大...

    Java_Collection_List-Set-Map.zip_list set map

    - 对于List,可以使用Collections.sort()方法进行排序。自定义类需要实现Comparable接口或提供Comparator。 - 对于Set,如TreeSet,元素会自动排序,自定义类需实现Comparable接口。 - 对于Map,可以使用TreeMap...

    java版本List中对象多属性排序.rar

    在Java编程中,对List集合中的对象进行多属性排序是一项常见的任务。这通常涉及到自定义比较逻辑,以满足复杂的数据排序需求。在这个“java版本List中对象多属性排序.rar”压缩包中,我们可能找到了一个关于如何在...

    Go语言使用sort包对任意类型元素的集合进行排序的方法

    本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法。分享给大家供大家参考。具体如下: 使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法: 代码如下:// Len is ...

    Java集合排序及java集合类详解[收集].pdf

    例如,TreeSet和TreeMap默认使用自然排序,而ArrayList和HashMap则不保证排序,但在使用Collections.sort()或Arrays.sort()方法时可以实现定制排序。 理解并熟练运用Java集合框架是Java程序员必备的技能,无论是...

Global site tag (gtag.js) - Google Analytics