Comparable 的 使用

2019-10-14 21:18:57

参考地址 Comparable 的 使用

在聊 Comparable 和 Comparator 之前,我觉得我们可以先聊聊Int数组的排序! 现在呢,下面有一个非常简单的数组


如:int[] array = {3,8,5,3,12,10};  要求呢就是对这个int数组进行一个从大到小或者从小到大的排序。我相信你们等下就会和我说 冒泡啊等的算法!但我们今天不聊这些算法。来点简单的!


在java 里面有个Arrays 的类(java.util.Arrays),他里面有一个sort的方法(public static void sort(int[] a)),这个方法就可以直接对这个数组进行排序! 而且这个方法还是由static修饰的,意思就是和你说,你别实例化哈,直接拿来用!


int[] array = {3,8,5,3,12,10};

Arrays.sort(array);

for(int index = 0;index < array.length;index++){

       System.out.print(array[index]+",");

}

结果

3,3,5,8,10,12,

 

写到这里,大家看到这个sort排序完是从小到大的一个顺序排的,那怎么从大到小呢? for循环反着输出不就好了么!


int[] array = {3,8,5,3,12,10};

Arrays.sort(array);

for(int index = array.length-1;index >=0;index--){

System.out.print(array[index]+",");

}

结果

12,10,8,5,3,3,

那么ok是吧,讲这个的目的呢是为了引出我下一个需求。现在我们对int数组的排序应该已经掌握了!是不是真的很简单是吧!


听明白的给我扣个6!!!


来进入正题哈! 现在我有一个需求,我手上呢有一个UserBean类,bean里面的字段有(id,username,age)三个字段。 如果你userBean不会写的,可以关电脑了哈。如下:


public class UserBean {

private String id;

private String username;

private Integer age;

        // set and get

}

 那现在我要做的呢就是,我要对这个UserBean数组进行一个按 年龄 大小排序的功能。什么意思呢!就是age越大的人,最先输出。


要做这个呢,我们也是用到了Arrays.sort 这个排序的方法!但不同的是,我们之前用的是int数组,现在我们用的是这个UserBean数组。如果你想对这个UserBean数组进行排序,你要多做一件事,就是让这个 UserBean类去 实现Comparable 的接口,并重写 里面  comparaTo 的方法。注意,这个接口是可以提供泛型的


public class UserBean implements Comparable<UserBean> {

        private String id;

        private String username;

        private String age;

        // 省略了  set and get 

        public int compareTo(UserBean o) {

            // TODO Auto-generated method stub

            return 0;

        }

}

compareTo 方法的返回值为三个,分别是[-1 ,0 ,1 ]具体重写的代码如下


public class UserBean implements Comparable<UserBean> {

        private String id;

        private String username;

        private String age;

        // 省略了  set and get 

        public int compareTo(UserBean o) {

               if(this.age > o.getAge()){

                    return 1;

               }else if(this.age < o.getAge()){

                     return -1

             }else{

                return 0;

             }

      }

}  

写完这个UserBean后,我们就可以去调用 Arrays.sort 这个方法了


UserBean[] array = UserBean[3];

array[0] = new UserBean("1","zhangsan","11");

array[1] = new UserBean("2","lisi","12");

array[2] = new UserBean("3","wangwu","13");

Arrays.sort(array);


  • 2019-12-04 10:46:26

    nuxt.js项目中全局捕获异常并生成错误日志全过程

     需求:客户在使用过程中页面报错时,可以生成错误记录传回服务器,以便改进。   步骤:     一.全局捕获异常,     二.发送到服务端,     三.生成错误日志。   一.全局捕获异常 如图,vue提供了errorHandle这个方法来处理全局异常,更多详细内容参见官网。

  • 2019-12-04 10:47:59

    nuxt.js项目中全局捕获异常并生成错误日志全过程

     需求:客户在使用过程中页面报错时,可以生成错误记录传回服务器,以便改进。   步骤:     一.全局捕获异常,     二.发送到服务端,     三.生成错误日志。   一.全局捕获异常 如图,vue提供了errorHandle这个方法来处理全局异常,更多详细内容参见官网。

  • 2019-12-04 10:48:18

    vue 项目资源文件 static 和 assets 不说区别直接使用?

    assets中资源会webpack构建压缩到你代码中,而static文件直接引用。 static 中长存放类包、插件等第三方的文件,assets里放属资源文件比如自己资源图片、css文件、js文件。 引入资源的方式static文件夹可以使用~/static/方式引入, assets文件夹可以使用 ~@/assets 方式引入

  • 2019-12-05 17:01:36

    Vue 结合 Axios 接口超时统一处理

    当网路慢的时候。又或者公司服务器不在内地的时候,接口数据请求不回来超时报错的情况相信大家肯定遇到过的,这里我把我公司项目请求超时的处理方法分享下,希望看过后有帮助。

  • 2019-12-05 17:13:40

    JS模板工具lodash.template的简单用法

    lodash是从underscore分支的一个项目,之前我写了一篇JS模板工具underscore.template的简单用法,lodash跟underscore很相似,这也简单介绍一下lodash的template方法。 先把underscore的文章中用过的代码贴过来,把underscore的js文件换成lodash的js,其他一字不改,然后我们试试:

  • 2019-12-06 10:47:29

    date-fns日期工具的使用方法详解

    isToday() 判断传入日期是否为今天 isYesterday() 判断传入日期是否为昨天 isTomorrow() 判断传入日期是否为 format() 日期格式化 addDays() 获得当前日期之后的日期 addHours() 获得当前时间n小时之后的时间点 addMinutes() 获得当前时间n分钟之后的时间 addMonths() 获得当前月之后n个月的月份 subDays() 获得当前时间之前n天的时间 subHours() 获得当前时间之前n小时的时间 subMinutes() 获得当前时间之前n分钟的时间 subMonths() 获得当前时间之前n个月的时间 differenceInYears() 获得两个时间相差的年份 differenceInWeeks() 获得两个时间相差的周数 differenceInDays() 获得两个时间相差的天数 differenceInHours() 获得两个时间相差的小时数 differenceInMinutes() 获得两个时间相差的分钟数

  • 2019-12-06 10:49:39

    npm 查看源 换源

    npm,cnpm,查看源,切换源,npm config set registry https://registry.npmjs.org

  • 2019-12-06 11:01:31

    npm发布包流程详解 有demo

    npm发布包步骤,以及踩过的坑(见红颜色标准): 1.注册npm账号,并完成Email认证(否则最后一步提交会报Email错误) 2.npm添加用户或登陆:npm adduser 或 npm login