JAVA 获取一组数据中的多组连续数据集合
给定一组数据,返回该数据中多组连续数据集合。
例如:
给定 [2, 3, 4, 6, 8, 10, 11, 12, 15, 16]
返回: [2, 3, 4],[6],[8],[10,11,12],[15,16]
使用java语言写的,逻辑很简单,应该都能看得懂,就直接贴代码了:
例如:
给定 [2, 3, 4, 6, 8, 10, 11, 12, 15, 16]
返回: [2, 3, 4],[6],[8],[10,11,12],[15,16]
使用java语言写的,逻辑很简单,应该都能看得懂,就直接贴代码了:
/**
* 获取列表中多组连续数据
* @param list 原数据
* @return 多组连续数据
*/
public static List<List<Integer>> getSerialNumList(List<Integer> list) {
List<List<Integer>> resultList = new ArrayList<>();
List<Integer> arrList = new ArrayList<>();
resultList.add(arrList);
if (list.size() == 1) {
resultList.get(resultList.size() - 1).add(list.get(0));
return resultList;
}
for (int i = 0; i < list.size(); i++) {
Integer nextNum = list.get(i + 1);
Integer nowNum = list.get(i);
if (nextNum - nowNum != 1) {
resultList.get(resultList.size() - 1).add(nowNum);
arrList = new ArrayList<>();
resultList.add(arrList);
} else {
arrList.add(nowNum);
}
if (i + 1 == list.size() - 1 ) {
arrList.add(nextNum);
break;
}
}
return resultList;
}
public static void main(String[] args) {
Integer[] arr = {2, 3, 4, 6, 8, 10, 11, 12, 15, 16};
List<Integer> list = new ArrayList<>(Arrays.asList(arr));
List<List<Integer>> serialNumList = getSerialNumList(list);
serialNumList.forEach(System.out::println);
}
浙公网安备 33010602011771号