List<Integer> list = Arrays.asList(1, 0, 1, 0, 1, 1, 1, 0, 1, 1);
int result = 1;
for (int i = 0; i < list.size(); i++) {
result = (result << 1) | list.get(i);
}
int origin = result & ((1 << list.size()) - 1);
int temp = 1 << list.size() -2;
//统计
AtomicInteger count = new AtomicInteger();
//map统计出现的次数(连续n次出现,m次连续段)
Map<Integer, Integer> map = Maps.newConcurrentMap();
int i = 1;
while (origin != 0) {
if (i == list.size()) {
count.addAndGet(1);
getData(map, count);
} else if ((origin & 1) == 1) {
count.addAndGet(1);
} else {
getData(map, count);
}
origin = origin >> 1;
i++;
}
System.out.println(map);
网友评论