今天工作中遇到个需求:第三方接口查询出数据 list,要求根据 list 里连续的日期进行分组,将数据转换为多份包换连续日期的 list 格式.
在这里把解决方法总结一下:
1. 使用 Stack 类进行数据处理.
<List> stackList = new ArrayList<>(); Stack stack = new Stack(); stackList.add(stack); for(int val : arr){ if(stack.isEmpty()){ stack.push(val); } else { if((val - 1) != stackList.get(stackList.size() - 1).peek() ){ stack = new Stack(); stack.push(val); stackList.add(stack); } else { stackList.get(stackList.size() - 1).push(val); } } } System.out.println(Arrays.toString(stackList.toArray())); }
2. 使用常规 list 处理.
<List> sections = new ArrayList<>(); ArrayList arrList = new ArrayList(); sections.add(arrList); for(int i = 0; i < arr.length ; i ++){ if(!((arr[i+1] - arr[i]) == 1)){ sections.get(sections.size() - 1).add(arr[i]); arrList = new ArrayList(); sections.add(arrList); if(i + 1 == arr.length - 1 ){ arrList.add(arr[i+1]); break; } } else { arrList.add(arr[i]); if(i + 1 == arr.length - 1){ arrList.add(arr[i + 1]); break; } } } System.out.println(Arrays.toString(sections.toArray())); }
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于