一個實體的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包