Collections.sort()排序原理之复合数据类型
2018-01-25 17:33
337 查看
package review; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class PersonTest { public static void main(String[] args) { //存储复合数据类型 List<Person> persons = new ArrayList<>(); List<Student> students = new ArrayList<>(); persons.add(new Person(12,"Mary ")); persons.add(new Person(13,"Smith")); persons.add(new Person(11,"David")); students.add(new Student(18,"亮亮 ")); students.add(new Student(19,"花花 ")); students.add(new Student(17,"豆豆 ")); System.out.println("P-unsorted:"+persons); System.out.println("S-unsorted:"+students+"\n"); mySort1(persons); mySort1(students); System.out.println("P-sorted-Comparable:"+persons); System.out.println("S-sorted-Comparable:"+students+"\n"); mySort2(persons,new MyComparator()); mySort2(students,new MyComparator()); System.out.println("P-sorted-Comparator:"+persons); System.out.println("S-sorted-Comparator:"+students+"\n"); } //Comparable private static <T extends Comparable<? super T>> void mySort1(List<T> list1) { for (int i = 0; i < list1.size() - 1; i++) { for (int j = i + 1; j < list1.size(); j++) { if (list1.get(i).compareTo(list1.get(j)) > 0) { Collections.swap(list1, i, j); } } } } //Comparator private static <T> void mySort2(List<T> list1, Comparator<? super T> cp) { for (int i = 0; i < list1.size() - 1; i++) { for (int j = i + 1; j < list1.size(); j++) { if (cp.compare(list1.get(i), list1.get(j)) > 0) { Collections.swap(list1, i, j); } } } } } //操作类型应该是具体类型的父类类型 class MyComparator implements Comparator<Person> { @Override public int compare(Person o1, Person o2) { return o1.compareTo(o2); } }
结果如下:
相关文章推荐
- java List Collections.sort 排序 支持 对象属性 普通数据类型 升序 降序 正序 倒序 排列
- java List Collections.sort 排序 支持 对象属性 普通数据类型
- 使用Collections.sort()方法扩展list集合中的数据并对其进行排序
- 《黑马程序员》java笔记->基本数据类型包装类及自动拆箱装箱原理,数组排序练习字符串切割
- c++ 中sort的用法 实例说明 sort是用来排序 实现不同类型的数据排序
- java相同数据类型的Arrays.sort()方法排序
- Collections.sort()排序原理之字符串
- 对各种数据类型进行排序 sort any type data
- 自己实现一个bubble_sort(冒泡排序),可以完成不同类型数据的排序
- vector中sort排序(解决char类型数据无法排序的问题)
- python---数据结构与数据类型,list,dict,tuple,排序sort,比较cmp,字符串模版
- Hadoop自定义排序和自定义数据类型使用(setSortComparatorClass和setGroupingComparatorClass)
- [C/C++标准库]_[初级]_[使用std::sort排序各种类型数据]
- [C/C++标准库]_[初级]_[使用std::sort排序各种类型数据]
- Hadoop自定义排序和自定义数据类型使用(setSortComparatorClass和setGroupingComparatorClass)
- vector中sort排序(解决char类型数据无法排序的问题)
- 自己完成一个冒泡排序(bubble_sort),可以完成不同类型数据的排序
- Java中的自定义类型的排序(Comaprator, Collections.sort())
- Java-对复合类型数据进行排序
- sort对string类型排序