package cn.com.collections.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.ListIterator;
import org.junit.BeforeClass;
import org.junit.Test;
public class ListPaiXu {
public static void main(String[] args) {
init();
testComparatorSort();
};
// 抽取两个公用的
static ArrayList<Integer> list = new ArrayList<Integer>();
// @BeforeClass注解标注的方法会在其它测试方法执行之前先执行,
// 且只执行一次.@Before注解标注的方法会在每个测试方法之前执行;
// 此处初始化集合只需要一次,因此使用@BeforeClass.
@BeforeClass
public static void init() {
list.add(5);
list.add(9);
list.add(1);
list.add(7);
System.out.println("排序前:");
for (Integer Integer : list) {
System.out.println(Integer);
}
}
/**使用Comparator比较器按age升序排序*/
//@Test //如果通过main方法调用的话,void前面需要添加static关键字,表示共享
public static void testComparatorSort(){
//通过1: Collections.sort()方法排序,
//2:创建一个比较器,实现比较的方法,
//3:最后遍历输出比较后的排序
//创建一个比较器
Collections.sort(list,new Comparator<Integer>() {
public int compare(Integer s1, Integer s2) {
if (s1 instanceof Integer && s2 instanceof Integer) {
Integer e1 = (Integer) s1;
Integer e2 = (Integer) s2;
//升序排序
return e1.compareTo(e2);
//降序排序
//return e2.compareTo(e1);
}
throw new ClassCastException("不能转换为Integer类型");
}
});
////1;通过增强for方法遍历
System.out.println("使用Comparator比较器排序后:");
for (Integer Integer : list) {
System.out.println(Integer);
}
//1;通过get方法遍历
System.out.println("通过get方法遍历================");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i)+",");
}
//2通过迭代器遍历
System.out.println("通过迭代器遍历================");
ListIterator<Integer> it = list.listIterator();//获取到迭代器
while(it.hasNext()){
System.out.println(it.next()+",");
}
//3 使用迭代器逆序遍历,默认倒序排列
System.out.println("\r\n======使用迭代器逆序遍历==========");
while(it.hasPrevious()){
System.out.print(it.previous()+",");
}
}
}
输出结果:
排序前:
5
9
1
7
使用Comparator比较器排序后:
1
5
7
9
通过get方法遍历================
1,
5,
7,
9,
通过迭代器遍历================
1,
5,
7,
9,
======使用迭代器逆序遍历==========
9,7,5,1,