Java根据容器(List,ArrayList)内对象的字段排序

来源:互联网 发布:红包辅助软件 编辑:程序博客网 时间:2024/04/29 11:00
用例是这样的:
一个结果集List,里面有很多的对象,要求根据对象的字段进行排序。

算法:
1. 对象实现Comparable接口,并从写compareTo()方法,方法里是排序规则。
2. 利用Arrays.sort(o)进行排序,不要要注意需要List.toArray();

3. 获得排序后的List。

具体算法如下:

Java 代码

import java.util.Date;/** * 需要排序的bean对象。 * 插入数据时 按照自定义的方式有序排放 * @author Lucky * 日期:2014-10-30 */public class ComparableBean implements Comparable<ComparableBean> {private int id;private String name;private Date birthday;public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}/* * 按照id从大到到小的顺序排序。 自己可以在方法里面编写任意的排序算法。 */public int compareTo(ComparableBean o) {// 根据名字从小到大顺序:if(String.CASE_INSENSITIVE_ORDER.compare(getName(), o.getName()) > 0)// 根据生日从小到大顺序:if (this.birthday.compareTo(o.getBirthday()) > 0) // 根据ID从小到大顺序。if(this.getId() > o.getId()){return 1;}else {return -1;}}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return getId() + " : " + getName() + " : " + getBirthday().toString();}}
排序和测试类:
Java代码

import java.util.ArrayList;import java.util.Arrays;import java.util.Date;import java.util.List;import java.util.Random;public class TestComparable {private TestComparable() {ComparableBean cbean;Random rand = new Random();List<ComparableBean> beans = new ArrayList<ComparableBean>();for (int i = 0; i < 100; i++) {cbean = new ComparableBean();cbean.setId(rand.nextInt(10000));cbean.setBirthday(new Date());cbean.setName("TestName" + rand.nextInt(1000));beans.add(cbean);}Object[] beanObjects = beans.toArray();Arrays.sort(beanObjects);beans.removeAll(beans);System.out.println(beans.size());for (int i = 0; i < 100; i++) {System.out.println(beanObjects[i]);}System.out.println("ok");}public static void main(String[] args) {new TestComparable();}}
运行结果如下:
0
142 : TestName517 : Thu Oct 30 10:54:35 CST 2014
194 : TestName184 : Thu Oct 30 10:54:35 CST 2014
268 : TestName11 : Thu Oct 30 10:54:35 CST 2014
403 : TestName502 : Thu Oct 30 10:54:35 CST 2014
443 : TestName256 : Thu Oct 30 10:54:35 CST 2014
621 : TestName939 : Thu Oct 30 10:54:35 CST 2014
698 : TestName584 : Thu Oct 30 10:54:35 CST 2014
829 : TestName171 : Thu Oct 30 10:54:35 CST 2014
891 : TestName636 : Thu Oct 30 10:54:35 CST 2014
902 : TestName329 : Thu Oct 30 10:54:35 CST 2014
927 : TestName615 : Thu Oct 30 10:54:35 CST 2014
1252 : TestName734 : Thu Oct 30 10:54:35 CST 2014
1266 : TestName91 : Thu Oct 30 10:54:35 CST 2014
1283 : TestName684 : Thu Oct 30 10:54:35 CST 2014
1343 : TestName522 : Thu Oct 30 10:54:35 CST 2014
1459 : TestName968 : Thu Oct 30 10:54:35 CST 2014
1615 : TestName646 : Thu Oct 30 10:54:35 CST 2014
1644 : TestName951 : Thu Oct 30 10:54:35 CST 2014
1869 : TestName821 : Thu Oct 30 10:54:35 CST 2014
1876 : TestName110 : Thu Oct 30 10:54:35 CST 2014
1879 : TestName999 : Thu Oct 30 10:54:35 CST 2014
1885 : TestName112 : Thu Oct 30 10:54:35 CST 2014
1980 : TestName219 : Thu Oct 30 10:54:35 CST 2014
2158 : TestName900 : Thu Oct 30 10:54:35 CST 2014
2212 : TestName564 : Thu Oct 30 10:54:35 CST 2014
2304 : TestName62 : Thu Oct 30 10:54:35 CST 2014
2337 : TestName913 : Thu Oct 30 10:54:35 CST 2014
2390 : TestName266 : Thu Oct 30 10:54:35 CST 2014
2465 : TestName877 : Thu Oct 30 10:54:35 CST 2014
2559 : TestName274 : Thu Oct 30 10:54:35 CST 2014
2861 : TestName249 : Thu Oct 30 10:54:35 CST 2014
2865 : TestName359 : Thu Oct 30 10:54:35 CST 2014
2923 : TestName650 : Thu Oct 30 10:54:35 CST 2014
3188 : TestName713 : Thu Oct 30 10:54:35 CST 2014
3216 : TestName873 : Thu Oct 30 10:54:35 CST 2014
3376 : TestName78 : Thu Oct 30 10:54:35 CST 2014
3410 : TestName69 : Thu Oct 30 10:54:35 CST 2014
3411 : TestName5 : Thu Oct 30 10:54:35 CST 2014
3436 : TestName702 : Thu Oct 30 10:54:35 CST 2014
3478 : TestName290 : Thu Oct 30 10:54:35 CST 2014
3491 : TestName478 : Thu Oct 30 10:54:35 CST 2014
3584 : TestName70 : Thu Oct 30 10:54:35 CST 2014
3881 : TestName16 : Thu Oct 30 10:54:35 CST 2014
4054 : TestName988 : Thu Oct 30 10:54:35 CST 2014
4138 : TestName854 : Thu Oct 30 10:54:35 CST 2014
4212 : TestName424 : Thu Oct 30 10:54:35 CST 2014
4289 : TestName214 : Thu Oct 30 10:54:35 CST 2014
4390 : TestName542 : Thu Oct 30 10:54:35 CST 2014
4400 : TestName84 : Thu Oct 30 10:54:35 CST 2014
4484 : TestName380 : Thu Oct 30 10:54:35 CST 2014
4504 : TestName70 : Thu Oct 30 10:54:35 CST 2014
4543 : TestName302 : Thu Oct 30 10:54:35 CST 2014
4558 : TestName959 : Thu Oct 30 10:54:35 CST 2014
4624 : TestName736 : Thu Oct 30 10:54:35 CST 2014
4830 : TestName812 : Thu Oct 30 10:54:35 CST 2014
4896 : TestName185 : Thu Oct 30 10:54:35 CST 2014
5018 : TestName715 : Thu Oct 30 10:54:35 CST 2014
5130 : TestName697 : Thu Oct 30 10:54:35 CST 2014
5276 : TestName623 : Thu Oct 30 10:54:35 CST 2014
5367 : TestName326 : Thu Oct 30 10:54:35 CST 2014
5370 : TestName855 : Thu Oct 30 10:54:35 CST 2014
5372 : TestName197 : Thu Oct 30 10:54:35 CST 2014
5510 : TestName115 : Thu Oct 30 10:54:35 CST 2014
5602 : TestName306 : Thu Oct 30 10:54:35 CST 2014
5672 : TestName985 : Thu Oct 30 10:54:35 CST 2014
5678 : TestName266 : Thu Oct 30 10:54:35 CST 2014
6193 : TestName626 : Thu Oct 30 10:54:35 CST 2014
6204 : TestName57 : Thu Oct 30 10:54:35 CST 2014
6261 : TestName39 : Thu Oct 30 10:54:35 CST 2014
6432 : TestName447 : Thu Oct 30 10:54:35 CST 2014
6540 : TestName256 : Thu Oct 30 10:54:35 CST 2014
6692 : TestName24 : Thu Oct 30 10:54:35 CST 2014
6707 : TestName941 : Thu Oct 30 10:54:35 CST 2014
6834 : TestName300 : Thu Oct 30 10:54:35 CST 2014
7009 : TestName249 : Thu Oct 30 10:54:35 CST 2014
7149 : TestName489 : Thu Oct 30 10:54:35 CST 2014
7392 : TestName72 : Thu Oct 30 10:54:35 CST 2014
7443 : TestName911 : Thu Oct 30 10:54:35 CST 2014
7461 : TestName164 : Thu Oct 30 10:54:35 CST 2014
7521 : TestName504 : Thu Oct 30 10:54:35 CST 2014
7684 : TestName148 : Thu Oct 30 10:54:35 CST 2014
7685 : TestName595 : Thu Oct 30 10:54:35 CST 2014
7798 : TestName253 : Thu Oct 30 10:54:35 CST 2014
7865 : TestName7 : Thu Oct 30 10:54:35 CST 2014
7923 : TestName308 : Thu Oct 30 10:54:35 CST 2014
7928 : TestName8 : Thu Oct 30 10:54:35 CST 2014
7963 : TestName283 : Thu Oct 30 10:54:35 CST 2014
8070 : TestName799 : Thu Oct 30 10:54:35 CST 2014
8187 : TestName162 : Thu Oct 30 10:54:35 CST 2014
8209 : TestName682 : Thu Oct 30 10:54:35 CST 2014
8286 : TestName741 : Thu Oct 30 10:54:35 CST 2014
8324 : TestName754 : Thu Oct 30 10:54:35 CST 2014
8442 : TestName268 : Thu Oct 30 10:54:35 CST 2014
8442 : TestName499 : Thu Oct 30 10:54:35 CST 2014
8657 : TestName73 : Thu Oct 30 10:54:35 CST 2014
8846 : TestName498 : Thu Oct 30 10:54:35 CST 2014
8983 : TestName469 : Thu Oct 30 10:54:35 CST 2014
9181 : TestName998 : Thu Oct 30 10:54:35 CST 2014
9464 : TestName37 : Thu Oct 30 10:54:35 CST 2014
9815 : TestName166 : Thu Oct 30 10:54:35 CST 2014
ok

0 0
原创粉丝点击