gpt4 book ai didi

Java 复杂的列表数组迭代

转载 作者:行者123 更新时间:2023-12-02 11:00:16 24 4
gpt4 key购买 nike

我想迭代列表数组中的重复数字组,并在组更改时执行某些操作。我的问题是,当下一组包含相同的数字时,如何分隔这两组?例如,我的数组中有以下数字:3,3,3,10,10,10,10,10,10,10,10,10,10,5,5,5,5,5总是有 3 批三和十批十等等。但是如果我有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,这给我一个索引越界异常。解决方案对我来说并不明显,它让我发疯!

提前谢谢您。菲尔

最佳答案

在第二个 for 循环之后,您应该有一个 if 保护来保护最后一次迭代。这是 counter 等于 List 大小的时间,因为内部 for 循环的最终迭代将计数器增加了 1

if(counter < changeOfTableCell.size()){
startCounter=changeOfTableCell.get(counter);
}

或者更确切地说终止

if(counter >= changeOfTableCell.size()) break;
startCounter=changeOfTableCell.get(counter);

关于Java 复杂的列表数组迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51392446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com