List 集合 是一种数据存储容器 它的特点是有序 存取同序 每一个元素都有对相应的下表 即index 大致说一下 今天主要介绍的不是List 集合 而是排序
我们一般的思路都像是给数组排序那样 便利 比较大小 然后 换位 然后在进行遍历 比较大小 直到所有的元素都比较完毕 才结束 当然这个也是可行的 但毕竟比较臃肿 还是不推荐这种方式 java 给我们提供了一个类Collections 而他其中包含了一个sort 方法 既排序方法
举个例子 – 使用Collections对list 进行排序
List test = new ArrayList<>();
test.add(15);
test.add(10);
test.add(19);
test.add(5);
test.add(1);
Collections.sort(test);
for (int i = 0; i < test.size(); i++) {
System.out.print(“输出结果 “+i);
}
输出结果为 1 5 10 15 19
这里可以看出使用Collection对list 进行排序是多么方便 当然这是Integer的类型 如果是Object 排序该怎么办呢
别急 Collection 也为我们想到了
下面看例子
List test = new ArrayList<>();
test.add(new Student(100,99,”张三”));
test.add(new Student(80,79,”王五”));
test.add(new Student(69,61,”赵六”));
test.add(new Student(45,100,”王二麻子”));
test.add(new Student(100,99,”张三哥”));
Collections.sort(test, new Comparator() {
@Override
public int compare(Student o1, Student o2) {
if (o1.getScore()==o2.getScore()){
if (o1.getId() == o2.getId()){
if (o1.getName().equals(o2.getName())){
return 1;
}else {
return o1.getName().compareTo(o2.getName());
}
}else {
return o1.getId() - o2.getId();
}
}else {
return o1.getScore() - o2.getScore();
}
}
});
for (int i = 0; i < test.size(); i++) {
System.out.print(“输出结果–”+test.get(i).toString());
}
输出结果
输出结果—-Student{id=69, score=61, name=’赵六’}
输出结果—-Student{id=80, score=79, name=’王五’}
输出结果—-Student{id=100, score=99, name=’张三’}
输出结果—-Student{id=100, score=99, name=’张三哥’}
输出结果—-Student{id=45, score=100, name=’王二麻子’}
根据分数大小排序 id 大小排序 name 长短排序 三个条件
使用Collections 对object 进行排序时 需要实现 Comparable 或者 重写 Comparator 才行 从上面我们可发现 Integer 并没有实现这个 那是因为Integer 并不需要我们手动实现 底层已经实现了这个
同时 Collections类还为我们提供了多种排序方法 顺序 sort() ; 倒序 reverse() ; 乱序shuffle() 有兴趣的朋友可以测试试验一下