如何在ArrayList

时间:2018-10-09 04:02:29

标签: java

我想为我的arraylist提供一个故障保护功能,即如果它不能具有一定的大小,我想将所有值设置为0,直到某个索引。但是,我找不到任何可以执行此操作的东西。

到目前为止,我已经对其“强加”,但由于我希望自己的最低水平越来越高,所以这是不可持续的:

if(challenges.size() < 4){
    challenges.clear();
    challenges.add(0, 0);
    challenges.add(1, 0);
    challenges.add(2, 0);
    challenges.add(3, 0);
}

1 个答案:

答案 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);
    }
}