前几天有个需求是这样的:
一个数组 [1,1,1,1,0,1,1,1,0,1,1,0],拆分成[[1,1,1,1,0],[1,1,1,0],[1,1,0]]怎么拆。
就是碰到0了就把0和0前面的放到一个数组内。并且如果末尾都是1的话那么久把末尾所有的1都放在一个数组内。
如果数组中包含-1的话,就删除所有的-1.
研究了半天,基本思路是先判断0的位置,然后进行截取,遇到0就把0和0前面的1放到一个新的数组内。废话不多说了,上代码吧。
import java.util.ArrayList;
import java.util.Iterator;
class aa {
public static void main(String[] args) {
ArrayList cc = new ArrayList<>();
cc.add("1");
cc.add("1");
cc.add("0");
cc.add("0");
cc.add("0");
cc.add("1");
cc.add("1");
cc.add("0");
cc.add("1");
cc.add("-1");
System.out.println(cc);
// 删除list中为-1的数据
for (int i = 0; i < cc.size(); i++) {
if ((cc.get(i)).equals("-1")) {
cc.remove(cc.get(i));
i--;
}
}
System.out.println(cc);
ArrayList addr = new ArrayList<>();
for (int i = 0; i < cc.size(); i++) {
if (cc.get(i).equals("0")) {
addr.add(i);
}
}
System.out.println(addr);
// 根据0的位置进行截断
ArrayList ccss = new ArrayList<>();
ArrayList ccsss = new ArrayList<>();
for (int i = 0; i < addr.size(); i++) {
for (int j = 0; j <= (int) addr.get(i); j++) {
ccss.add(cc.get(j));
if (j == (int) addr.get(i)) {
System.out.println(ccss);
ccsss.add(ccss);
}
if (cc.get(j).equals("0")) {
ccss = new ArrayList<>();
}
}
}
// 获取最后剩余的1为一个新的数组
if ((cc.get(cc.size() - 1)).equals("1")) {
for (int i = cc.size() - 1; i >= 0; i--) {
if ((cc.get(i)).equals("0")) {
break;
} else {
ccss.add(cc.get(i));
}
}
ccsss.add(ccss);
}
System.out.println(ccsss);
}
}
OK,结束,记录一下!
网友评论