区间合并


    @Test
    public void test2() {
        List<String[]> listIn = new ArrayList<>();
        String[] a = {"20230101", "20230105"};
        String[] b = {"20230104", "20230108"};
        String[] c = {"20230111", "20230120"};
        listIn.add(c);
        listIn.add(a);
        listIn.add(b);
        List<String[]> fib = merge(listIn);
        for (String[] item : fib) {
            log.info(Arrays.stream(item).collect(Collectors.joining(",")));
        }
    }

    /**
     * 区间合并
     *
     * @param listIn
     * @return
     */
    public static List<String[]> merge(List<String[]> listIn) {
        Collections.sort(listIn, (o1, o2) -> o1[0].compareTo(o2[0]));
        List<String[]> listOut = new ArrayList<>();
        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];
                continue;
            }
            if (tmp[0].compareTo(end) <= 0 && 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;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容