天天看点

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

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

import java.util.ArrayList;

import java.util.HashSet;

import java.util.List;

import java.util.Set;

public class Test1 {

    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("]");

        }

    }

}