今天工作中遇到个需求:第三方接口查询出数据 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()));
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于