Java库中的排序函数
来源:互联网 发布:python 日期减一天 编辑:程序博客网 时间:2024/05/18 02:06
使用java库中的函数进行排序,递增,递减,对于数组,对于List集合排序。对于基本数据类型外的对象类型排序。
主要方法:
Arrays.sort(array);
Collections.sort(list);
Arrays.sort(nameArray,Comparator);
Collections.sort(list,Comparator);
注意:
是Collections, 而不是 Collection
是Arrays,而不是 Array
1.对于数组–Arrays.sort(array)
递增排序 Arrays.sort(strArray );
int[] intArray = new int[] {2, 1, 3, -2};Arrays.sort(intArray);for(int i = 0; i < intArray.length; i++){ System.out.print(intArray[i]+" ");}运行结果:-2 1 2 3----------String[] strArray = new String[] {"x","a","B"};Arrays.sort(strArray);for(int i = 0; i < strArray.length; i++){ System.out.print(strArray[i]+" ");}运行结果:B a x //根据ASCII码表中对应数值大小排序
递减排序 Arrays.sort(intArray,Comparator.reverseOrder());
int[] intArray = new int[] {2, 1, 3, -2};Arrays.sort(intArray,Comparator.reverseOrder());for(int i = 0; i < intArray.length; i++){ System.out.print(intArray[i]+" ");}运行结果: 3 2 1 -2----------String[] strArray = new String[] {"x","a","B"};Arrays.sort(strArray,Comparator.reverseOrder() );for(int i = 0; i < strArray.length; i++){ System.out.print(strArray[i]+" ");}运行结果:x a B
对于String类型的,不区分大小写排序:
Arrays.sort(strArray,String.CASE_INSENSITIVE_ORDER);
String[] strArray = new String[] {"x","a","B"};Arrays.sort(strArray,String.CASE_INSENSITIVE_ORDER);for(int i = 0; i < strArray.length; i++){ System.out.print(strArray[i]+" ");}运行结果:a B x
2.对于List –Collections.sort(list)
递增顺序 Collections.sort(list);
LinkedList list = new LinkedList(); //对于String类型同样适用list.add(2);list.add(3);list.add(1);list.add(-2);Collections.sort(list);System.out.println(list.toString());运行结果:-2 1 2 3
递减顺序 Collections.sort(list,Collections.reverseOrder());
LinkedList list = new LinkedList(); //对于String类型同样适用list.add(2);list.add(3);list.add(1);list.add(-2);Collections.sort(list,Collections.reverseOrder());System.out.println(list.toString());运行结果: 3 2 1 -2
3. 对于对象数组–使用Comparator接口
区别与上面的基本数据类型(int,char等),对于对象的排序就要用到自定义的Comparable接口了。以比较名字为例。
先比较姓,再比较名,按字典序递增排序
第一种写法:将实例类实现Comparable接口,重写compareTo(Object o)方法。
lastName.compareTo(o.lastName)的返回值有等于0,大于0,小于0三种情况。
如果等于0,则lastName字符串与o.lastName的字符串相同
如果大于0,则astName字符串大于o.lastName的字符串
如果小于0,则astName字符串小于o.lastName的字符串
自定义对象类(在此类中重写compareTo(Object o)方法)
class Name implements Comparable<Name>{ public String firstName, lastName; public Name(String firstName, String lastName){ this.firstName = firstName; this.lastName = lastName; } public int compareTo(Name o) { //实现接口 int lastCmp = lastName.compareTo(o.lastName); return (lastCmp != 0? lastCmp : firstName.compareTo(o.firstName)); } public String toString(){ //便于输出测试 return firstName + " " + lastName; } }
测试类:
public static void main(String[] args) { Name nameArray[] = { new Name("John", "Lennon"), new Name("Karl", "Marx"), new Name("Groucho", "Marx"), new Name("Oscar", "Grouch") }; Arrays.sort(nameArray); for(int i=0;i<nameArray.length;i++){ System.out.println(nameArray[i].toString()); } }运行结果: Oscar GrouchJohn LennonGroucho MarxKarl Marx
第二种写法:
实例类不用实现Comparable接口,而在排序的时候,需要写Comparator 接口。
排序时调用 Arrays.sort(nameArray,lastNameOrder);
其中,lastNameOrder为Comparator接口
这里以先比较名,再比较姓为例
自定义对象类
class Name2{ public String firstName, lastName; public Name2(String firstName, String lastName){ this.firstName = firstName; this.lastName = lastName; } public String toString(){ //便于输出测试 return firstName + " " + lastName; }}
测试类
public class Test {public static void main(String[] args) { //实现Comparator的接口 Comparator firstNameOrder = new Comparator<Name2>() { public int compare(Name2 n1, Name2 n2) { int firstCmp = n1.firstName.compareTo(n2.firstName); return (firstCmp != 0? firstCmp : n1.lastName.compareTo(n2.firstName)); } }; Name2 nameArray[] = { new Name2("John", "Lennon"), new Name2("Karl", "Marx"), new Name2("Groucho", "Marx"), new Name2("Oscar", "Grouch") }; Arrays.sort(nameArray, firstNameOrder); //或者用Collections.sort也一样,只不过要转换成List //Collections.sort(Arrays.asList(nameArray),firstNameOrder); for(int i = 0; i < nameArray.length; i++){ System.out.println(nameArray[i].toString()); } }运行结果:Groucho MarxJohn LennonKarl MarxOscar Grouch
原文出处:Java使用库函数排序
- Java库中的排序函数
- java中的排序sort()函数的使用
- Java库中的排序方法
- MATLAB中的排序函数
- C++中的排序函数
- 排序中的归并排序Java
- java快速排序函数
- Java中的排序
- Java中的排序
- Java中的排序
- Java中的排序
- java中的集合排序
- JAVA中的排序法
- java中的几个排序
- Java数据结构中的排序
- java中的排序汇总
- java中的排序算法
- Java中的自定义排序
- java.io.IOException: Can't read ...((No such file or directory))
- linux字符驱动之点亮LED
- koltin 防止控制针的方法
- 实训第二天之bootstrap首页框架(一)
- Centos7.2安装redis
- Java库中的排序函数
- C编译过程
- jsp页面获取当前年月日
- Java中IO流详解
- 索引器
- 聊天页面设计中,遇到的几个bug
- 计算机科学与Python编程导论_MIT 学习笔记(三)
- flask-migrate初学
- webstorm对webpack中resolve进行智能提示