sk个人博客

愿居于一城,与卿所见美好......

推荐文章

github 下载的zip项目如何再关联到github仓库

    前言

    相信github是大多数码农平时最喜欢逛的网站之一,看到喜欢的代码二话不说直接clone下来,但是github在国内的网络环境一直不稳定,尤其是clone比较大的项目时,经常几十kb的下载,半天搞不下来,很是费事。但是直接下载zip文件却挺快的,但是zip文件下载之后,却无法关联到原有的github地址,这就无法实时更新代码的最新修改的代码bug或者功能,那么该如何解决呢?于是我google了一下,在stackflow上面发现了一些可行的方法,下面分享给大家。

    关联离线项目到github

    unzip <repo>.zip
    cd <repo>
    git init
    git add .
    git remote add origin https://github.com/<user>/<repo>.git
    git remote update
    git checkout master


    阅读全文>>

作者:sk分类:【javaEE浏览(300评论(0

2020-12-25 16:21:53

java比较器的几种用法

    对数组或者List列表,或者Map(非hash)等排序是我们经常使用的一种处理数据的手段。Comparator接口是java中很方便的一个接口。

    我们只需要重写compare方法即可实现排序。

    int compare(Object o1, Object o2) 返回一个基本类型的整型
    如果要按照升序排序,
    则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
    如果要按照降序排序
    则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)

    使用步骤

    新建比较器并重写compare方法

    1. Comparator<User> comp=new Comparator<User>(){
    2. //升序
    3. public int compare(User o1,User o2){
    4. if(o1.getAge()>o2.getAge()){
    5. return 1;
    6. }else if(o1.getAge()==o2.getAge()){
    7. return 0;
    8. }else{
    9. return -1;
    10. }
    11. }
    12. };

    也可以新建内部类或者外部类如下:

    1. public class UserAgeComparator implements Comparator<User> {
    2. //升序
    3. public int compare(User o1,User o2){
    4. if(o1.getAge()>o2.getAge()){
    5. return 1;
    6. }else if(o1.getAge()==o2.getAge()){
    7. return 0;
    8. }else{
    9. return -1;
    10. }
    11. }
    12. }


    使用比较器

    1. Collections.sort(users,comp);
    2. Collections.reverse(users);//反转排序

    如果是类的的话需要先实例化再使用

    1. UserAgeCompartor mc = new UserAgeCompartor ();
    2. Collections.sort(list, mc);


    自定义比较器----文本比较

    上述的使用方法已经能够满足大部分的使用场景。只需要我们处理compare函数中的比较逻辑即可。(包括数组,字符串长度,时间等的比较都能满足)。

    但是如果要比较文本内容的话,还是自定义比较器规则会方便一些。使用步骤也是一样的,只是在compare方法中我们需要定义一个规则器。

    1. package com.test;  
    2.   
    3.   
    4. import java.text.ParseException;  
    5. import java.text.RuleBasedCollator;  
    6. import java.util.Comparator;  
    7. import com.test.domain.User;  
    8. public class UserNameComparator implements Comparator<User> {  
    9.    
    10.     @Override  
    11.     public int compare(User o1, User o2) {  
    12.        String myrule = "<王<赵<李<张";   
    13.        RuleBasedCollator myrulecollato = null;  
    14.        try {  
    15.            myrulecollato = new RuleBasedCollator(myrule);  
    16.        } catch (ParseException e) {  
    17.           e.printStackTrace();  
    18.        }  
    19.        return myrulecollato.compare(o1.getUsername(), o2.getUsername());  
    20.     }  
    21. }  


    这里 "王<赵<李<张" 就是我们规定的文本内容排序规则,这样的话 有王字的就会排在前面了。如果出现文本模糊匹配不准确的出来的排序不准确的话,只需要把全名写上就能准确排序了,比如"王五<赵六<李四<张三"  

    如果需要了解原理的话 建议查看这两篇。

    List的sort中的Comparator的使用和原理

    阅读全文>>

作者:sk分类:【javaEE浏览(183评论(0

2020-11-27 17:09:09