【发布时间】:2018-07-18 01:53:26
【问题描述】:
我想遍历列表数组中的重复数字组,并在组更改时执行某些操作。我的问题是当下一个组包含相同的数字时,我如何分隔两组?例如,我在数组中有以下数字:
3,3,3,10,10,10,10,10,10,10,10,10,10,5,5,5,5,5
总是有 3 个 3 和 10 个 10 等等。但如果我有
3,3,3,3,3,3 这是两组三个我变得不卡住了。
一种(某种)可行的解决方案是:
List<Integer> changeOfTableCell = new ArrayList<Integer>();
changeOfTableCell.add(3);
changeOfTableCell.add(3);
changeOfTableCell.add(3);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(5);
changeOfTableCell.add(5);
changeOfTableCell.add(5);
changeOfTableCell.add(5);
changeOfTableCell.add(5);
int startCounter=changeOfTableCell.get(0);
int counter=0;
for(int a=0; a<changeOfTableCell.size(); a++) {
if(startCounter==changeOfTableCell.get(counter)) { //the start of the group
for(int i=0; i<startCounter; i++) { //print the group as per the size of the group
System.out.println(changeOfTableCell.get(counter));
counter=counter+1;
}
//move the start of the next group
startCounter=changeOfTableCell.get(counter)
System.out.println("Break");//do something here
}
}
计数器变为 18,这给了我一个索引越界异常。解决方案对我来说并不明显,它一直让我发疯!
提前谢谢你。 菲尔
【问题讨论】:
-
尝试查看值而不是迭代例如如果 [3,3,3,3,3,3,2,2] 查看第一个值 3 (i=0) 然后从 i=0,1,2 开始分组 下一个值为 3 (i=3) 组 i= 3,4,5 下一个值是 2(i=6) 所以组 i=6,7
-
这个主意不错,我试试看。