判断集合数据是否连续,并将连续的部分分段存储

package 判断集合数据是否连续;

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


public class Test1 {
    /**
     * 初始化数据
     * @return
     */
    public static List<Integer> initialization(){
        //1.初始化源数据
        List<Integer> numList = new ArrayList<Integer>();
        numList.add(1);
        numList.add(2);
        numList.add(3);
        numList.add(4);
        numList.add(4);
        numList.add(5);
        numList.add(6);
        numList.add(7);
        numList.add(8);
        numList.add(8);
        numList.add(9);
        numList.add(9);
        numList.add(10);
        numList.add(11);
        numList.add(12);
        numList.add(13);
        numList.add(14);
        return numList;
    }
    

    public static void main(String[] args) {
        
        //1.初始化数据
        List<Integer> numList=initialization();
        
        //2.逻辑处理
        boolean flag=true;
        List<Set<Integer>> reslutList=new ArrayList<>();
        Set<Integer> temSet=null;
        for (int i = 0; i < numList.size()-1; i++) {
            if (i==0) {
                temSet=new HashSet();
            }
            
            int before=numList.get(i);//当前元素
            int last=numList.get(i+1);//下一个元素
            System.out.println("before="+before+"\t"+"last="+last);
            //判读当前元素+1后是否=下一个元素
            if ((before+1)!=last) {
                System.out.println("不连续");
                if (i==0) {//当第一个数据就不连续,将第一个数据单独放到一个集合里面
                    temSet.add(before);
                }
                reslutList.add(temSet);
                temSet=new HashSet();
                temSet.add(last);
                flag=false;
            }else {
                System.out.println("连续");
                temSet.add(before);
                temSet.add(last);
            }
            //当遍历到倒数第二个数据时(当前i的值只能遍历到倒数第二个数),存在两个逻辑,如下
            if (last==numList.get(numList.size()-1)) {
                temSet.add(last);//1.倒数第二个数和最后一个数不连续
                reslutList.add(temSet);//2.当倒数第二个数和最后一个数连续,但是和前一个不连续
            }
        }
        
        //3.输出结果
        System.out.println("源数据是否连续:"+false);
        
        for (Set<Integer> list : reslutList) {
            System.out.print("[");
            for (int list2 : list) {
                System.out.print(list2+"\t");
            }
            System.out.println("]");
        }
    }
    
    

}
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值