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); }