问题描述:把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<List<Integer>> result = new ArrayList<>();
result.add(new ArrayList<>());
if (srcData.length <= 2){
for (int i=0; i<srcData.length; 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);
}
}