java List排序方法 Comparator和Comparable
2014-05-06 20:45
405 查看
今天写的一个程序中需要对一个List进行排序,突然发现自己对这个问题一无所知,于是查阅资料并进行测试,在此做个记录。
Collections工具类中有两个方法可以对List进行排序,分别为:
public static <T extends Comparable<? super T>> void sort(List<T> list)
public static <T> void sort(List<T> list, Comparator<? super T> c)
从函数签名中可以看出,实现Comparable 或 Comparator接口 即可对List中的元素进行排序,测试代码如下,一看就明白
运行结果为:
3
7
10
99
另外一种方法为:
运行结果为:
99
10
7
3
两种方法的效果都是一样的,不过使用Comparator接口的话,可以实现排序算法和业务逻辑相分离。对于一些已经实现的类也可以用Comparator来实现排序,而无需修改已实现的类。
Collections工具类中有两个方法可以对List进行排序,分别为:
public static <T extends Comparable<? super T>> void sort(List<T> list)
public static <T> void sort(List<T> list, Comparator<? super T> c)
从函数签名中可以看出,实现Comparable 或 Comparator接口 即可对List中的元素进行排序,测试代码如下,一看就明白
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.LinkedList; import java.util.List; public class SortList { public static void main(String[] args) { List<Entry> ll = new LinkedList<Entry>();//此处可为ArrayList ll.add(new Entry(3)); ll.add(new Entry(10)); ll.add(new Entry(7)); ll.add(new Entry(99)); Collections.sort(ll, new Comparator<Entry>(){ public int compare(Entry o1,Entry o2){ if(o1.getA()<o2.getA()){ return -1; } else if(o1.getA()>o2.getA()) return 1; return 0; } }); for(Entry t:ll){ System.out.println(t.getA()); } } } class Entry{ private int a; public Entry(int a){ this.a = a; } public int getA(){ return a; } }
运行结果为:
3
7
10
99
另外一种方法为:
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.LinkedList; import java.util.List; public class SortList { public static void main(String[] args) { // TODO Auto-generated method stub List<Entry> ll = new LinkedList<Entry>(); ll.add(new Entry(3)); ll.add(new Entry(10)); ll.add(new Entry(7)); ll.add(new Entry(99)); Collections.sort(ll); for(Entry t:ll){ System.out.println(t.getA()); } } } class Entry implements Comparable{ private int a; public Entry(int a){ this.a = a; } public int getA(){ return a; } @Override public int compareTo(Object o) { Entry t = (Entry) o; if(this.a>t.a){ return -1; } else if(this.a<t.a) return 1; else return 0; } }
运行结果为:
99
10
7
3
两种方法的效果都是一样的,不过使用Comparator接口的话,可以实现排序算法和业务逻辑相分离。对于一些已经实现的类也可以用Comparator来实现排序,而无需修改已实现的类。
相关文章推荐
- Java集合排序方法comparable和comparator的总结
- Java集合排序方法comparable和comparator的总结
- Java关于List<String> 进行排序,重写Comparator()方法
- java中对集合或数组进行排序有两种方法:Comparable 与 Comparator
- java对list集合使用comparator方法比较排序
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- java实现排序的方法-继承Comparable和Comparator
- 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: [java] view plain copy /** * 根据ord
- Java中对List集合排序的两种方法
- Java排序: Comparator vs Comparable 入门
- 有关Java list 去重 保持当前排序的原生方法
- Java中集合List按照集合内实体类元素的指定字段排序方法
- [Java 11] Comparable 数组排序 之一 与 Comparator 数组排序之二
- 用Java集合中的Collections.sort方法对list排序的两种方法
- 着重基础之—Java 8 Comparator: How to Sort a List (List排序)
- JAVA中Collections.sort()实现List排序的公共方法和自定义方法
- Comparable_Comparator_排序工具类JAVA124-125
- java 数组比较,元素的比较,Comparable,Comparator比较的应用实现,排序,查找示例
- Java之Comparator和Comparable在排序中的应用
- JAVA 比较方法 Euals Comparable Comparator