Вот альтернативная реализация, которая, на мой взгляд, более удобна для чтения и более четко показывает, что на самом деле делает функция. Просто изложите это, чтобы вы могли учиться, чтобы вы могли видеть альтернативные стили подхода к той же проблеме.
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static org.junit.Assert.*;
public class Foo {
private List<Integer> createList(Integer endValue) {
return IntStream.rangeClosed(1, endValue)
.boxed()
.map(value -> value % 4 == 0 ? value * 10 : value)
.collect(Collectors.toList());
}
@Test
public void test() {
List<Integer> intList = createList(10);
List<Integer> expectedList = Arrays.asList(1, 2, 3, 40, 5, 6, 7, 80, 9, 10);
assertEquals(expectedList, intList);
}
}