连续数字数组分组.[1,2,5,6,7] 分成 [1,2],[5,6,7]

描述

连续数字数组分组.[1,2,5,6,7] 分成 [1,2],[5,6,7],先排序,再分组,连续数字即表示 前一个数字等于下一个数字-1,用伪代码表示就是

preValue = nextValue - 1

实现

方法

/** 
	 * 遍历比较
	 * 前一个元素 ==后一个元素-1
	 * @param indexList 传入已经排好序的数组
	 * @return 分组后的数组列表
	 */
public static List<List<Integer>> getColumnsList(List<Integer> indexList){
		List<List<Integer>> list = new ArrayList<>();
		List<Integer> currentList = new ArrayList<>();
		for(int i=0;i<indexList.size();i++){
			int currentIndex = indexList.get(i);
			if(currentList.size()==0){
				currentList.add(currentIndex);
				list.add(currentList);
			}else{
				if(currentIndex-1==currentList.get(currentList.size()-1)){
					currentList.add(currentIndex);
				}else{
					currentList = new ArrayList<>();
					currentList.add(currentIndex);
					list.add(currentList);
				}
			}
		}
		return list;
	}