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包
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章