问题描述:把list里的数据,根据是否符合条件过滤,分成连续的段。比如{0,0,1,0,1,1,1,0,0,1,1}过滤掉0,分成3段 {{1},{1,1,1},{1,1}}。
- public class ClassMain {
- @Test
- public void test() {
- // srcData是测试数据
- int[] srcData = {};
- // int[] srcData = {0};
- // int[] srcData = {1};
- // int[] srcData = {1,0};
- // int[] srcData = {1,1};
- // int[] srcData = {0,1};
- // int[] srcData = {1,0,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,0};
- List
> result = new ArrayList<>();
- result.add(new ArrayList<>());
- if (srcData.length <= 2){
- for (int i=0; i
- if (srcData[i] == 1){
- result.get(result.size()-1).add(srcData[i]);
- }
- }
- } else {
- for (int i=1;i<=srcData.length-2;i++){
- if (i == 1 ){
- if (srcData[i-1] == 1){
- result.get(result.size()-1).add(0,srcData[i-1]);
- }
- if (srcData[i] == 1){
- result.get(result.size()-1).add(srcData[i]);
- } else {
- if (result.get(result.size()-1).size()!=0){
- result.add(new ArrayList<>());
- }
- }
- }else if (i == srcData.length-2){
- if (srcData[i] == 1){
- result.get(result.size()-1).add(srcData[i]);
- }
- if (srcData[i+1] == 1){
- result.get(result.size()-1).add(srcData[i+1]);
- break;
- }
- }else{
- if (srcData[i] == 1){
- result.get(result.size()-1).add(srcData[i]);
- }else{
- if (result.get(result.size()-1).size()!=0){
- result.add(new ArrayList<>());
- }
- }
- }
- }
- }
- if (result.get(result.size()-1).size() == 0){
- result.remove(result.size()-1);
- }
- System.out.println(result);
- }
- }