java实现多个数组中时间段重复去重,最后获取一天的有效时间段

public class TestL {

    public static void main(String[] args) {

        List<String[]> listIn = new ArrayList<String[]>();
        String[] a = {"07:00","09:30"};
        String[] b = {"19:30","23:00"};
        String[] c = {"06:00","08:25"};
        listIn.add(c);
        listIn.add(a);
        listIn.add(b);
        fib(listIn);
    }

    public static List<String[]> fib(List<String[]>listIn){
        Collections.sort(listIn, new Comparator<String[]>() {
            @Override
            public int compare(String[] o1, String[] o2) {
                return o1[0].compareTo(o2[0]);
            }
        });
        List<String[]> listOut = new ArrayList<String[]>();
        String begin = "";
        String end = "";
        for (int i = 0,size = listIn.size();i < size;i++){
            String[] tmp = listIn.get(i);
            if(i==0){
                begin = tmp[0];
                end = tmp[1];
            }else{
                if(tmp[0].compareTo(end) <=0 ){
                    if(tmp[1].compareTo(end) >0){
                        end = tmp[1];
                    }
                }else{
                    String[] str = {begin,end};
                    listOut.add(str);
                    begin = tmp[0];
                    end = tmp[1];
                }
            }
            if(i==(size-1)){
                String[] str = {begin,end};
                listOut.add(str);
            }
        }
        return listOut;
    }


}

备注:博主微信公众号,不定期更新文章,欢迎扫码关注。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值