Collections工具类中的sort方法
来源:互联网 发布:java线程共享数据 编辑:程序博客网 时间:2024/04/28 10:49
1.了解Collections工具类
Collections工具类是java集合框架的成员,是一种用来操作集合对象的工具类,在Collections类中有一个sort()方法,可以对给定的集合进行排序。集合列表中所有元素都要实现Comparable接口。由于不可使用基本类型作为泛型,我们对它们相应的包装类进行操作。对以包装类为泛型的集合的排序,是根据元素的自然顺序,对指定列表按升序进行排序。
2.Comparable,Comparator接口
Comparable和Comparator接口,也是java集合框架的成员
Comparable接口给对象定义了默认的比较规则,当一个类实现了这个接口,就说明了该类的实例是可以比较大小的,可以进行自然排序。一旦类实现了Comparable接口,就必须实现compareTo()方法,当类的两个实例进行比较时,就会调用这个方法。该方法返回一个int类型的值,若为正数表示(a对像比b对象)大,负数表示小,0表示相等
Comparator-给对象定义临时的比较规则,当一个类实现了这个接口,就必须实现compare()方法,可以将comparator传递给sort方法,如Collections.sort或者Arrays.sort,也就是可以调用Collections.sort方法来使用实现接口的的具体实例。
这里要注意,在你使用这个方法以后,你的Student类(见下文代码)就不需要再实现Comparable接口了。
当使用Collections.sort对指定的集合进行排序以后,默认排序方式为升序。
3.对Integer泛型的List进行排序
public void testSort1(){ List<Integer> integerList=new ArratList<Integer>(); Random random=new Random(); Integer k; for(inti=0;i<10;i++){ do{ k=random.nextInt(100); }while(integerList.contains(k));//判断list中是否包含生成的这个随机数 integerList.add(k); } Collections.sort(integerList);}
4.对String泛型的List进行排序
public class testSort1(){ List<String> stringList=new ArrayList<String>(); stringList.add("microsoft"); stringList.add("google"); stringList.add("lenovo"); Collections.sort(stringList);}
排序结果为:google,lenovo,microsoft
这里是按照每一个字符串的首字母进行排序的,若首字母相同则比较第二个字母,这样依次比较,排列顺序是先数字(0-9),然后大写字母(A-Z),然后小写字母(a-z)
5.对其他类型泛型的List进行排序,以Student为例
public class Student implements Comparable<Student>{ String id; String name; public Student(int id,String name){ this.id=id; this.name=name; } @Override public int compareTo(Student o){ //按照学生id进行排序 return this.id.compareTo(o.id); }}public class testSort3(){ List<Student> studentList =new ArrayList<Student>(); Random random=new Random(); studentList.add(newStudent(random.nextInt(1000)+"","Jack")); studentList.add(newStudent(random.nextInt(1000)+"","RUB")); studentList.add(newStudent(random.nextInt(1000)+"","Dog")); Collections.sort(studentList);}
用上面的方法的比较是不严谨的,抛开获取的随机数可能会重复这个问题,如果我指定一个id为10000的同学,按照以上的方式排列,那么排列结果则会是,这位学号1000的同学排在第一位,而它本应该是排到最后的,为什么会出现这种情况呢,我们id的类型是String,那么它排序的时候还是按照一位一位的比较,比较第一位的时候,1最小,就排在了第一位。
所以这种比较方法还是应该根据实际情况进行考虑,下面我们来看看另一个接口,以及另一种实现方式。
public class Compara implements Comparator<Student>{ @Override public int compare(Student o1,Student o2){ return o1.name.compareTo(o2.name); }public class testSort3(){ List<Student> studentList =new ArrayList<Student>(); Random random=new Random(); studentList.add(newStudent(random.nextInt(1000)+"","Jack")); studentList.add(newStudent(random.nextInt(1000)+"","RUB")); studentList.add(newStudent(random.nextInt(1000)+"","Dog")); Collections.sort(studentList,new Compara());}}
- Collections工具类中的sort方法
- Collections工具类下的sort方法
- 集合工具类Collections.sort()排序方法
- Collections工具类的sort方法
- Java基础之集合框架--Collections工具类中的sort()方法
- Hash表 collections工具 sort排序方法
- TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
- TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
- Collections中sort()和Arrays中的sort方法分析
- java中的集合工具类Collections中的常用方法
- Java中应用Collections工具类的Sort()方法对List进行排序
- Collections 类的sort 方法排序
- Collections类sort方法的用法
- Collections静态方法sort
- 实现Collections.sort方法
- Collections.sort:重载方法
- Collections.sort方法
- Collections.sort() 方法例子
- 深入探索 Kdump,第 1 部分:带你走进 Kdump 的世界
- 【2016年Esri开发者大会亮点解析】Insights for ArcGIS,Apps家族再添重量级新丁
- 程序入口—UIApplicationMain详解
- 根据Request获取客户端IP
- 108 - Convert Sorted Array to Binary Search Tree
- Collections工具类中的sort方法
- php Connection refused
- Kafka+Spark Streaming+Redis实时计算整合实践
- hihoCoder 1273 清理海报
- delete delete[]
- Mesos, Marathon, Docker 平台部署记录
- GTMBase64导入报错解决方法
- RSA算法原理(二)
- 用户的主要群组和次要群组