我想为我的arraylist提供一个故障保护功能,即如果它不能具有一定的大小,我想将所有值设置为0,直到某个索引。但是,我找不到任何可以执行此操作的东西。
到目前为止,我已经对其“强加”,但由于我希望自己的最低水平越来越高,所以这是不可持续的:
if(challenges.size() < 4){
challenges.clear();
challenges.add(0, 0);
challenges.add(1, 0);
challenges.add(2, 0);
challenges.add(3, 0);
}
答案 0 :(得分:-1)
int startIndex = 0, endIndex = 4;
if (challenges.size() < endIndex) {
challenges.clear();
IntStream.range(startIndex, endIndex)
.forEach(i -> challenges.add(0));
}
或者,如果可以重新分配,那么这可能会更有效:-
int startIndex = 0, endIndex = 4;
if (challenges.size() < endIndex) {
challenges = IntStream.range(startIndex, endIndex)
.mapToObj(i -> 0)
.collect(Collectors.toList());
}
或者最好的方法是使用旧的for循环:-
int endIndex = 4;
if (challenges.size() < endIndex) {
challenges.clear();
for (int i = 0; i < endIndex; i++) {
challenges.add(0);
}
}