Java的列表排序问题
来源:互联网 发布:麦多商城系统 源码 编辑:程序博客网 时间:2024/05/21 22:43
Java中的列表排序问题非常的常见,我们经常使用的是自然顺序排序,此时Java本身提供了很好的接口Comparable和Camparator
二者的区别是Comparable接口是自然排序,Camparator接口是为了用于对排列的顺序精准的控制。
Arrays和Collections都重写了sort函数,此时的sort函数一般分为两种,一种是参数为一个数组,另一种参数是一个数组和一个Camparator对象。
举例说明使用Comparable进行排序
import java.util.Arrays;public class sortdemo {public static void main(String [] args){sortObjects();}public static void sortObjects(){final String[] numbers = {"2","1","3","4","5"};Arrays.sort(numbers);System.out.print(Arrays.toString(numbers));}}
上边的代码主要是直接使用重写好的sort函数进行排序,这个是Arrays自带的,用于自然顺序排序非常简单
但是,如果是一些自定义的类没有实现Comparable接口,那么直接进行sort就是不行的,下边举例:
import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class NotCamparable {private int i;private NotCamparable(final int i){this.i = i;}public static void main(String[] args){sortNotCamparable();}public static void sortNotCamparable(){final List<NotCamparable> objects = new ArrayList<>();for(int i = 0; i < 10; i++){objects.add(new NotCamparable(i));}try{Arrays.sort(objects.toArray());}catch(Exception e){System.out.println(e);}}}
此时会输出异常
java.lang.ClassCastException: NotCamparable cannot be cast to java.lang.Comparable
如果想实现自定义的排序方法,可以实现sort所需要的Camparator 接口
然后Collections.sort(numbers, new ReverNumberOrder());
这里numbers是需要排序的数组, 后边的ReverseNumberOrder()是自定义的排序方式(这里显然是倒序,为详细写出代码...)
0 0
- Java的列表排序问题
- Java中列表的排序
- Java列表排序问题(急)
- 关于python的列表排序问题汇总
- java排序的问题
- Java技巧:列表排序
- JAVA 列表排序
- 不同数据类型的数据在列表中排序的问题
- Tribon Object Name列表的排序问题
- java map 排序的问题
- Python 的列表排序
- Python 的列表排序
- Python 的列表排序
- Python 的列表排序
- python列表的排序
- Python 列表的排序
- Python的列表排序
- Java实现文件目录列表的自定义排序
- Java 模拟Ajax上传文件
- array和list的排序算法对比(一):快速排序
- 策略模式
- Intent应用详解
- cocos2dx 基础
- Java的列表排序问题
- Android数据库SQLite操作详解及LitePal用法详解(一)
- linux下mysql的简单配置及监控
- 【ios】关于UIImageView的一个坑
- 内网穿透&UDP打洞
- Hibernate的单向N-N关联(四)
- 关于线程的一些概念和关于线程返回值的简单示例代码
- Apple Pay 详细教程
- Swift实现UITableViewCell的翻转效果