java List 集合排序

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() 有兴趣的朋友可以测试试验一下

猜你喜欢

转载自blog.csdn.net/naide_s/article/details/80564041