List泛型排序

一个实体的list集合,实体里有两个属性,一个是字符串name,一个是整数num,以num为list排序,排序规则是1,9,2,10,3,11,4,12,5,13,6,14,7,15,8,16
下列代码包含一下功能:
1、打乱list集合
2、按照list对象中的int属性从大到小或从小到大排序list
3、按照规则排序(1,9,2,10,3,11,4,12,5,13,6,14,7,15,8,16)

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import org.apache.commons.beanutils.BeanComparator;
import org.apache.commons.collections.comparators.ComparatorChain;
/*
 * 一个实体的list集合,实体里有两个属性,一个是字符串name
 * 一个是整数num,以num为list排序,排序规则是
 * 1,9,2,10,3,11,4,12,5,13,6,14,7,15,8,16
 */

/**   
* Copyright: Copyright (c) 2018 
* 
* @ClassName: A.java
* @Description: 该类的功能描述
*
* @version: v1.0.0
* @author: zss
* @date: 2018年4月25日 下午3:40:59 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2018年4月25日     zss        v1.0.0               修改原因
*/
public class A {

    public void sortTest() {
        //添加测试数据
        List<Person> list = new ArrayList<Person>();
        Person person = null;
        for (int i = 1; i < 17; i++) {
            person = new Person();
            person.setNum(i);
            person.setName("测试" + i);
            list.add(person);
        }
        System.out.println("初始数据------------------");
        for(Person p : list ) {
            System.out.println(p.getNum());
        }
        //打乱数据顺序         此处操作是为了测试使用,实际应用中要去掉
        Collections.shuffle(list);
        System.out.println("打乱之后的数据------------");
        for(Person p : list) {
            System.out.println(p.getNum());
        }
        //开始第一次排序--------将其调整为从小到大(根据num)
        ComparatorChain chain = new ComparatorChain();
        chain.addComparator(new BeanComparator("num"), false);// true,fase正序反序
        Collections.sort(list, chain);
        System.out.println("第一次排序后的数据----------");
        for(Person p : list) {
            System.out.println(p.getNum());
        }
        // 开始第二次排序
        List<Person> list2 = new ArrayList<Person>();
        int a = 0;
        int b = a + 8;
        for (int i = 1; i < 17; i++) {
            if (i % 2 != 0) {
                // 奇数
                list2.add(list.get(a));
                a = a+1;
            } else {
                // 偶数
                list2.add(list.get(b));
                b = a+8;
            }
        }
        System.out.println("第二次排序后的数据---------------");
        for (Person p : list2) {
            System.out.println(p.getNum());
        }
    }
    public static void main(String[] args) {
        A a = new A();
        a.sortTest();
    }
}

用到的jar包
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zhengsaisai/article/details/80083631