Java对List进行排序
2014-08-20 15:22
330 查看
昨天遇到了一个问题,从数据库中获取的数据虽然是经过排序了的,但是到了访问层的时候,又变换了一次格式,是数据的格式固定了。当时想到了一个就是对返回的集合进行排序,引发了下面的问题,怎么对集合进行排序呢。
当时想到的第一个方法就是Collections.sort(list)
这个方法还有一个重载的方法Collections.sort(list, comparator)
首先要么这个list实现Comparator接口,要么就直接去写一个匿名内部类进行排序。
当然了,我为了这个排序的接口能够进行通用性,想了很多办法,这里写出了一个例子。
(不是很完善,我想到的是使用泛型,然后反射出类,然后获取类的每一个属性,然后根据不同的属性可以进行不同的排序,这里还没有做到。有思路的人可以指点一下,主要是反射哪里遇到了一点问题。)
当时想到的第一个方法就是Collections.sort(list)
这个方法还有一个重载的方法Collections.sort(list, comparator)
首先要么这个list实现Comparator接口,要么就直接去写一个匿名内部类进行排序。
当然了,我为了这个排序的接口能够进行通用性,想了很多办法,这里写出了一个例子。
(不是很完善,我想到的是使用泛型,然后反射出类,然后获取类的每一个属性,然后根据不同的属性可以进行不同的排序,这里还没有做到。有思路的人可以指点一下,主要是反射哪里遇到了一点问题。)
package com.xxz.util; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Test1 { public static void test() { List<A> as = new ArrayList<A>(); as.add(new A(1, 1, 1)); as.add(new A(4, 4, 4)); as.add(new A(2, 2, 2)); as.add(new A(5, 5, 5)); as.add(new A(3, 3, 3)); // 根据E1降序 Collections.sort(as, new EOrder(1, 2)); print(as); } public static void main(String[] args) { test(); } public static void print(List objs) { for (Object obj : objs) { System.out.print(obj + "\t"); } } } class EOrder implements Comparator<A> { private int flag; // 1 表示升序, 0 表示降序 private int eType; //表示 比较的类型 1 表示e1, 2 表示e2 3表示e3 public EOrder(int flag, int eType) { this.flag = flag; this.eType = eType; } public int compare(A o1, A o2) { switch (eType) { case 1: switch (flag) { case 1: if (o1.getE1() > o2.getE1()) { return 1; } else { return 0; } case 0: if (o1.getE1() < o2.getE1()) { return 1; } else { return 0; } } case 2: switch (flag) { case 1: if (o1.getE2() > o2.getE2()) { return 1; } else { return 0; } case 0: if (o1.getE2() < o2.getE2()) { return 1; } else { return 0; } } case 3: switch (flag) { case 1: if (o1.getE3() > o2.getE3()) { return 1; } else { return 0; } case 0: if (o1.getE3() < o2.getE3()) { return 1; } else { return 0; } } } return -1; } } class A { private int e1; private int e2; private int e3; public A() { } public A(int e1, int e2, int e3) { this.e1 = e1; this.e2 = e2; this.e3 = e3; } public int getE1() { return e1; } public void setE1(int e1) { this.e1 = e1; } public int getE2() { return e2; } public void setE2(int e2) { this.e2 = e2; } public int getE3() { return e3; } public void setE3(int e3) { this.e3 = e3; } @Override public String toString() { return "A [e1=" + e1 + ", e2=" + e2 + ", e3=" + e3 + "]"; } }
相关文章推荐
- List<Entity>排序:根据javabean中的一个字段对beanList进行排序
- 【Java核心技术】Collections.sort对list进行排序
- java 实现List对象中按某种方式进行排序
- java 对list进行排序
- Java中的对List中元素进行自定义排序
- 【原创】Java 对 List 内对象根据对象属性进行排序
- Java-Collections的sort方法对list进行排序
- java compareTo对list中的map进行倒序排序
- java 中对list中的汉字进行排序
- Java对List中的对象进行排序
- Java对list进行排序
- java中如何对list进行排序
- java 对List进行排序
- Java按照List内存储的对象的某个字段进行排序
- Java中对List进行排序
- 【Java】对于自定义对象List进行排序
- java中list里面存放map,根据map中的某一个字段进行排序
- Java中:对已有的List<Bean>进行排序
- Java对List对象进行排序
- java中对List对象集合进行排序