这里讲的Sort()[进行升序的排序]方法是java.util.Collections中的一个静态的方法,这里面需要知道他的两个不同参数的方法 ,当然要进行排序,就说明添加的对象是可以进行比较的。如果基本数据类型的包装类和String类型都是已经实现Comparable的接口,所以可以不需要任何的操作,进行默认的比较。

第一个方法:

Sort

public static > coid sort(List list) 其实他的参数就是一个集合,他的泛型对象实现了Comparable的接口,实现了里面的compareTo的抽象方法,他的返回值是一个int类型,如果返回值为0则两个对象是相等的,大于0,则对象一比对象二大,反之。

public int compareTo(Student o) {

// TODO Auto-generated method stub

return 0;

}

第二个方法:

Sort

public static  void sort(List list,Comparator super T> c)这里有两个参数,第一个就是一个集合对象,而第二个是一个实现了Comparator的接口,他的实现的抽象方法是,他的返回值是一个int类型,如果返回值为0则两个对象是相等的,大于0,则对象一比对象二大,反之。

public int compare(Student o1, Student o2) {

// TODO Auto-generated method stub

return 0;

}

比较这两个不同参数的方法,可以看出出现了两个不同的接口,这两个接口有什么区别呢

a.Comparable的接口---------默认的比较规则

<1>实现该接口表示这个类的实例可以比较大小,可以进行自然的排序

<2>定义了默认的比较规则

<3>其实现类需要实现CompareTo()的方法

<4>CompareTon()的方法返回正数表示大,负数表示小,0表示相等

b.Comparator接口-----------临时的比较规则

<1>用于定义临时的比较规则,而不是默认的比较规则

<2>其实现类需要实现compara()方法

<3>Comparator和Comparable都是Java集合框架的成员

接下来就讲解List的三种排序,第一种是int等基本数据类型的排序,第二种String类型的排序,第三种是一个普通类的排序,我把第一种和第二种结合的来说,因为他们的类或者包装类都实现了Comparable的接口,重写了方法,所以他们有默认的比较规则即(①首先是数字0-9②然后是大写的字母A-Z③最后是小写字母a-z)

/*** 1.List添加10个重复的整数

* 泛型不能是基本类型,必须是基本类型的包装类才可以

*@paramargs*/

public voidsortTest() {

List list=new ArrayList();

Random random=newRandom();intk;/*** 添加不重复的10位随机数*/

for(int i=0;i<10;i++) {do{

k=random.nextInt(100);

}while(list.contains(k));

list.add(k);

System.out.println("成功添加整数"+k);

}

System.out.println("--------------------排序前-----------------------");for(Integer integer : list) {

System.out.println("整数为"+integer);

}

Collections.sort(list);

System.out.println("--------------------排序后-----------------------");for(Integer integer : list) {

System.out.println("整数为"+integer);

}

}/*** 泛型为String的list的排序

*@paramargs*/

public voidsortTest02() {

List list=new ArrayList();

list.add("mir");

list.add("google");

list.add("android");

System.out.println("-------------------排序前-------------------");for(String string : list) {

System.out.println("字符串为"+string);

}

Collections.sort(list);

System.out.println("---------------------排序后------------------");for(String string : list) {

System.out.println("字符串为"+string);

}

}

第三种也是我们主要讲的一种,以为我们需要比较一些类,比如学生类,就需要可能比较学生的身高,或者ID好,或者姓名。。。。。这里有两种方法,

第一种就是将要进行比较的类,让其实现Comparable的接口,重写ComparaTo()的方法,在里面写入比较的准则。

//比较学生的ID

@Override

public int compareTo(Student o) {

// TODO Auto-generated method stub

return this.id.compareTo(o.id);

}

而第二种就是创建一个实现Comparator接口的类,重写方法,然后调用我们前面说的有两个参数的Sort()方法,

public class StudentComparator implements Comparator {

@Override

public int compare(Student o1, Student o2) {

// TODO Auto-generated method stub

return o1.getName().compareTo(o2.getName());

}

}

以下是代码:

List list=new ArrayList();

list.add(new Student("2","kang"));

list.add(new Student("1","chen"));

list.add(new Student("3","abc"));

System.out.println("------------排序前--------------");for(Student student : list) {

System.out.println("学生的ID"+student.getId()+": 学生的姓名"+student.getName());

}

Collections.sort(list);

System.out.println("------------排序后--------------");for(Student student : list) {

System.out.println("学生的ID"+student.getId()+": 学生的姓名"+student.getName());

}

System.out.println("-------------以姓名进行排序-----");

Collections.sort(list,newStudentComparator());for(Student student : list) {

System.out.println("学生的ID"+student.getId()+": 学生的姓名"+student.getName());

}

java integer集合排序_Java集合中List的Sort()方法进行排序相关推荐

  1. java 查找排序_Java类库中的一些常用的查找排序

    查找是一种试图在数据集或者数组中发现某一目标值的操作 排序是使列表中的元素按照自然顺序进行排序的一种操作 Java的类库中包含来一些可以实现对数组或者列表实现查找和排序的方法. 例如:Arrays.b ...

  2. java对文件读取_java开发中文件读取的方法总结

    1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件 ...

  3. java比较字符串大小写_java 字符串中判断字母大小写方法

    展开全部 方法一: 根据 Character 类提供的大小写判断方法 ``e68a8462616964757a686964616f31333366306434`java Character.isUpp ...

  4. java 集合操作_Java 集合的操作 个人方法总结

    一些小建议: 在使用集合的时候如果不太清楚需求我们可以像对列一样如下: Queue expres=new ArrayDeque<>(); 重新指定类型,来进行更换 Queue expres ...

  5. java private 接口_java接口中 定义 private 私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  6. Java私有方法解释_java接口中 定义 private 私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  7. python list排序方法_python中List的sort方法指南

    简单记一下python中List的sort方法(或者sorted内建函数)的用法. List的元素可以是各种东西,字符串,字典,自己定义的类等. sorted函数用法如下: sorted(data, ...

  8. python中列表的sort方法_python中列表的sort方法使用详解

    内容简介:python中列表的sort方法使用详解 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的. 排序,数字.字符 ...

  9. python list sort by,python中List的sort方法指南

    简单记一下python中List的sort方法(或者sorted内建函数)的用法. List的元素可以是各种东西,字符串,字典,自己定义的类等. sorted函数用法如下: sorted(data, ...

  10. java map 排序_java集合框架面试题大集合

    1.介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)[基础] 答:Collection FrameWork 如下: Collection: ├List │├Link ...

最新文章

  1. boost::program_options模块实现支持自定义选项语法的测试程序
  2. 使用Jenkins来实现内部的持续集成流程(下)
  3. java 判断两个数是否异号
  4. 传统form表单提交方式的文件上传与文件存储
  5. 标图123123666
  6. S5pv210裸机实验——SDRAM重定位
  7. TracePro模拟LED手电筒整个照明系统并分析
  8. 安捷伦mso8104a示波器电源烧毁故障维修【图文】
  9. Java OOP 思想
  10. 中芯国际:Q1营收同比增长22%至11亿美元,预计年底产能仍供不应求|看财报
  11. stm32学习之定时器中断时间设置与计算
  12. XOI2003赛后题解
  13. Day 40 多表查询以及pymysql相关操作
  14. keyshot怎么贴logo_KeyShot图文教程,三步教你如何使用添加有织纹的Logo
  15. Excel中实现时间相减,得到间隔时间(年月日时分秒)
  16. python包发布到Pypi官网
  17. Vue动画出现和隐藏
  18. 基于Flink百亿数据实时去重
  19. @SentinelResource详解
  20. 各种jar下载 Jar File Download

热门文章

  1. android studio 融云,融云 SDK 是否支持 AndroidX
  2. JMeter下载安装及入门教程
  3. 车辆路径问题VRPTW之四【节约里程法ClarkWright算法】
  4. tp框架like模糊查询报错
  5. iOS 各种项目源码集
  6. Oracle 创建表语句
  7. 网络安全审计系统产品竞品分析
  8. 卡尔曼滤波估matlab算法,INS-matlab 利用卡尔曼滤波算法估计惯导系统状态量的源代码~谢谢分享 - 下载 - 搜珍网...
  9. 用VBA制作Excel单选框和多选框
  10. python excel数据分析师培训_从零开始学可视化数据分析师就业课程(Excel、 MySQL、Power BI、Tableau、python、R)...