zoukankan      html  css  js  c++  java
  • 【Java】自定义排序器StringComparator

    功能:字符串直接排序,常常出现‘11’,‘12’等排在10后面缺在2,3等前面的情况,该排序器能在字符串能合理转化为数字时按数字排序,从而能使数字字符串按真正的顺序来,11,12等不再插队;党字符串不能合理转化为数字时便仍然按字符串排序。

    定义:

    import java.util.Arrays;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.regex.Pattern;
    
    public class StringComparator implements Comparator<String>{
    
        @Override
        public int compare(String s1, String s2) {
            if(isInteger(s1) && isInteger(s2)) {
                int i1=Integer.parseInt(s1);
                int i2=Integer.parseInt(s2);
                
                return i1-i2;
            }
            
            return s1.compareTo(s2);
        }
    
        /**
         * 判断字符串是否整数
         * @param s
         * @return
         */
        private static boolean isInteger(String s) {
            Pattern p=Pattern.compile("[0-9]+");
            return p.matcher(s).matches();
        }
        
    }

    使用:

            String[] arr= {"1","2","3","10","11","12","13","哈哈","嘻嘻"};
            List<String> ls=Arrays.asList(arr);
            
            System.out.println("--------直接按字符串排序的结果---------");
            Collections.sort(ls);
            
            for(String s:ls) {
                System.out.println(s);
            }
            
            System.out.println("--------利用StringComparator排序的结果---------");
            
            Collections.sort(ls,new StringComparator());
            
            for(String s:ls) {
                System.out.println(s);
            }

    输出:

    --------直接按字符串排序的结果---------
    1
    10
    11
    12
    13
    2
    3
    哈哈
    嘻嘻
    --------利用StringComparator排序的结果---------
    1
    2
    3
    10
    11
    12
    13
    哈哈
    嘻嘻

    END

  • 相关阅读:
    pandas Dataframe filter
    process xlsx with pandas
    data manipulate in excel with easyExcel class
    modify registry in user environment
    add number line in vim
    java import webservice
    ctypes MessageBoxA
    music 163 lyrics
    【python实例】自动贩卖机
    【python基础】sys模块(库)方法汇总
  • 原文地址:https://www.cnblogs.com/heyang78/p/15768810.html
Copyright © 2011-2022 走看看