博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java类排序_浅析
阅读量:6991 次
发布时间:2019-06-27

本文共 1747 字,大约阅读时间需要 5 分钟。

hot3.png

0、基本集合排序的方法:

java.util.Arrays.sort(o);//Arrays是类;java.util.Collections.sort(o);//Collections是类;

    

对Java类排序,介绍两种常用方法:

1、对所要排序的类,实现了该接口:

java.lang.Comparable

    即实现了方法: 比较结果大的返回1,相等返回0,小于返回-1。

public int compareTo(T o);//定义类比较的方法;

对符合以上要求,则可以直接使用:

java.util.Arrays.sort(o);//升序排序,对集合数组有效,不可以对List使用java.util.Collections.sort(List arg0);

Eg:

public class Ar implements Comparable
{    //定义所要创建的集合类,实现对应接口; int a; int b; String name; Ar(){} Ar(int a,int b,String name){ this.a=a; this.b=b; this.name=name; } public int compareTo(Ar o) { return this.name.compareTo(o.name); }}public class Join{ public static void main(String[] args) { /*Ar[] ars =new Ar[2]; ars[0]=new Ar(1,3); ars[1]=new Ar(3,1); Arrays.sort(ars); for(Ar i : ars) { System.out.println("a="+i.a+",b="+i.b); }*/ List br_list=new ArrayList(); br_list.add(new Ar(2,5,"z")); br_list.add(new Ar(2,2,"b")); Collections.sort(br_list); for(int  i=0 ;i

2、使用比较器:Comparator<T>(接口){public int compare(T o1,To2){}}

    在调用Arrays.sort(T o,Comparator<T> c),Collections.sort(T o,Comparator<T> c)

传递一个比较器;

Collections.sort(list, new Comparator
(){ @Override public int compare(Br o1, Br o2) { return o1.c>o2.c?1:-1; //return o1.d>o2.d?1:-1; }});public class Br { int c; int d; public Br(){} public Br(int c,int d){ this.c=c; this.d=d; }}

扩展:

    源码java.util.Collections类文件sort(List<T> list, Comparator<? super T> c)的代码

public static 
 void sort(List
 list, Comparator
 c) {        Object[] a = list.toArray();        Arrays.sort(a, (Comparator)c);        ListIterator i = list.listIterator();        for (int j=0; j

   实际上Collections.sort(<T> list, <? super T> c)的实现也是将list转化成数组用Arrays.sort处理。

转载于:https://my.oschina.net/u/1384818/blog/379585

你可能感兴趣的文章
GNU make manual 翻译( 一百四十二)
查看>>
Excel里的多列求和(相邻或相隔皆适用)
查看>>
使用现有ECC数据库进行安装或者恢复系统
查看>>
发布我的高性能纯C#图像处理基本类,顺便也挑战一下极限。:)
查看>>
在Ubuntu上单机安装Hadoop
查看>>
安装SharePoint2010出现“Could not find stored procedure ‘sp_dboption’.”的解决方法
查看>>
存储过程中执行动态Sql语句
查看>>
SQL Server里简单参数化的痛苦
查看>>
最好用的图表工具 -- ECharts
查看>>
主攻ASP.NET MVC4.0之重生:ASP.NET MVC使用JSONP
查看>>
Spark_Streaming
查看>>
【细说Java】揭开Java的main方法神秘的面纱(转)
查看>>
ArcGIS Server密码丢失
查看>>
对象模型的细节
查看>>
Mac 显示和隐藏文件
查看>>
sigaction 用法实例
查看>>
React-Router V3 如何进行页面权限管理
查看>>
虚拟无线接入网:行业的演进方向
查看>>
又一波猛料!iPhone 8启动Face ID解锁 ,还玩起了3D动画表情
查看>>
xcode高效开发必备! mark,待实践
查看>>