SkuSelects
SkuSelects copied to clipboard
看了代码,有段不知道什么意思
/** * 算法拆分组合 用1和0 的移位去做控制 * (这块需要你打印才能看的出来) * * @param len * @param n * @return */ private static ArrayList<Integer[]> getCombFlags(int len, int n) { if (n <= 0) { return new ArrayList<>(); } ArrayList<Integer[]> aResult = new ArrayList<>(); Integer[] aFlag = new Integer[len]; boolean bNext = true; int iCnt1 = 0; //初始化 for (int i = 0; i < len; i++) { aFlag[i] = i < n ? 1 : 0; Log.e(TAG, "getCombFlags:初始化===aFlag["+i+"]== "+ aFlag[i]); }
aResult.add(aFlag.clone());
while (bNext) {
iCnt1 = 0;
for (int i = 0; i < len - 1; i++) {
if (aFlag[i] == 1 && aFlag[i + 1] == 0) {
for (int j = 0; j < i; j++) {
aFlag[j] = j < iCnt1 ? 1 : 0;
Log.e(TAG, "getCombFlags:aFlag["+j+"]== "+ aFlag[j]);
}
aFlag[i] = 0;
aFlag[i + 1] = 1;
Integer[] aTmp = aFlag.clone();
aResult.add(aTmp);
if (!TextUtils.join("", aTmp).substring(len - n).contains("0")) {
bNext = false;
}
break;
}
if (aFlag[i] == 1) {
iCnt1++;
}
}
}
Log.e(TAG, "getCombFlags:aResult=== "+aResult );
return aResult;
}
这段代码的意思是拆分sku的所有可能的组合,你可以试着一个一个打印出来看看