List<String>类型的字符串特殊排序util 时间段排序,指定位置字符串排序

特殊字符串排序,本人在遇到时间段排序时新封的包,望大家择优而选。
话不多说,案例摆上。

sortByStr通过字符串分割来排序,取到 “:” 之前的字符串,并进行排序sortByStr通过字符串分割来排序,取到 ":" 之前的字符串,并进行排序

按照字符串指定位数的字符比较排序。如下指定字符串中的数据位数为5。
在这里插入图片描述
按照字符串指定区间位数的字符比较排序在这里插入图片描述

import lombok.extern.slf4j.Slf4j;

import java.util.*;

/**
 * @author cgj
 * @since 2020/05/08
 */
@Slf4j
public class SortUtil {

    /**
     *  按照字符串指定位数的字符比较排序
     * @param list 对比的字符串列表
     * @param bit 字符串的对比参数位置
     * @return
     */
    public static List<String> sortByInt(List<String> list, Integer bit) {
        if (bit == 0) {
            return null;
        }
        int realBit = bit - 1;
        HashMap<Integer, String> integerStringHashMap = new HashMap<>();
        for (String str : list) {
            // 如果list空则返回
            if (list.isEmpty()) {
                return null;
            }
            char n = str.charAt(realBit);
            int nn = n-'0';
            integerStringHashMap.put(nn, str);
        }
        Set<Integer> sets = integerStringHashMap.keySet();
        List<Integer> keys = new ArrayList<>(sets);
        Collections.sort(keys);
        ArrayList<String> inputList = new ArrayList<>();
        for (Integer key : keys) {
            inputList.add(integerStringHashMap.get(key));
        }
        return inputList;
    }

    /**
     * 按照字符串指定区间位数的字符比较排序
     * @param list 对比的字符串列表
     * @param bitStart 开始位数(包括)
     * @param bitEnd 结束位数(包括)
     * @return
     */
    public static List<String> sortByInt(List<String> list, Integer bitStart, Integer bitEnd) {
        if (bitStart == 0 || bitEnd == 0 || bitStart >= bitEnd) {
            return null;
        }
        int realBitStart = bitStart - 1;
        int realBitEnd = bitEnd;
        HashMap<Integer, String> integerStringHashMap = new HashMap<>();
        for (String str : list) {
            // 如果list空则返回
            if (list.isEmpty()) {
                return null;
            }
            Integer integer = Integer.valueOf(str.substring(realBitStart, realBitEnd));
            integerStringHashMap.put(integer, str);
        }
        Set<Integer> sets = integerStringHashMap.keySet();
        List<Integer> keys = new ArrayList<>(sets);
        Collections.sort(keys);
        ArrayList<String> inputList = new ArrayList<>();
        for (Integer key : keys) {
            inputList.add(integerStringHashMap.get(key));
        }
        return inputList;
    }

    /**
     * st第一次出现分割字符串,st前的字符串大小排序
     * @param list 对比的字符串列表
     * @param st 字符第一次出现的时候
     * @return
     */
    public static List<String> sortByStr(List<String> list, String st) {
        if (st == null || st == "") {
            return null;
        }
        HashMap<Integer, String> integerStringHashMap = new HashMap<>();
        for (String str : list) {
            // 如果list空则返回
            if (list.isEmpty()) {
                return null;
            }
            Integer integer = Integer.valueOf(str.substring(0, str.indexOf(st)));
            integerStringHashMap.put(integer, str);
        }
        Set<Integer> sets = integerStringHashMap.keySet();
        List<Integer> keys = new ArrayList<>(sets);
        Collections.sort(keys);
        ArrayList<String> inputList = new ArrayList<>();
        for (Integer key : keys) {
            inputList.add(integerStringHashMap.get(key));
        }
        return inputList;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值