小技巧,年月数据列转行

有时我们要数据列转行

 

 整理成

202103-202104
201909-201909
202103-202103

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.inter.JyHzUtilService;


public class test15 {

    public static void main(String[] args) {
        Set<String> set=new HashSet<>();
        set.add("202001");
        set.add("202003");
        set.add("202005");
        set.add("202003");
        set.add("202004");
        set.add("202008");
        //set.add("202009");
        List<String[]> listmap=setTocols(set);
        for(String[] aaa:listmap){
         System.out.println(aaa[0]+":"+aaa[1]);
        }
    }
    
    //将[202001, 202003, 202004, 202005, 202008, 202009]
    //整理为202001-202001 202003-202005  202008-202009
    public static List<String[]> setTocols(Set<String> set){
        set= JyHzUtilService.setSort(set,"des");
        List<String[]> listmap=new ArrayList<>();
        String[] str=new String[2];
        String aaaup="";//上一个数
        int i=0;
        for(String aaa:set){
            if(str[0]== null) {
                str[0]=aaa;//记录开始时间
                aaaup=aaa;
            }else if((Integer.parseInt(aaa)-Integer.parseInt(aaaup))==1 ||(Integer.parseInt(aaa)-Integer.parseInt(aaaup))==89 ){//连续
                aaaup=aaa;
            }else{//中断
                str[1]=aaaup;//记录结束时间
                listmap.add(str);
                str=new String[2];//清空数据
                str[0]=aaa;
                aaaup=aaa;
            }
            i++;
            //最后一条
            if(set.size()==i) {
                if(str[0]!= null && str[1] ==null){
                    if(aaa.equals(str[0])) str[1]=str[0];
                    else str[1]=aaa;
                    listmap.add(str);
                    str=new String[2];//清空数据
                    aaaup="";
                }
            }
            

        }
        return listmap;
    }

}

 

posted @ 2021-04-12 09:55  咔咔kk  阅读(139)  评论(0编辑  收藏  举报