Єдиною альтернативою використанню циклу є використання рекурсії.
Ви можете визначити такий метод, як
public static int sum(List<Integer> ints) {
return ints.isEmpty() ? 0 : ints.get(0) + ints.subList(1, ints.length());
}
Це дуже неефективно в порівнянні з використанням звичайного циклу і може підірватися, якщо у вас багато елементів у списку.
Альтернативою, яка дозволяє уникнути переповнення стека, є використання.
public static int sum(List<Integer> ints) {
int len = ints.size();
if (len == 0) return 0;
if (len == 1) return ints.get(0);
return sum(ints.subList(0, len/2)) + sum(ints.subList(len/2, len));
}
Це так само неефективно, але дозволить уникнути переповнення стека.
Найкоротший спосіб написати те саме
int sum = 0, a[] = {2, 4, 6, 8};
for(int i: a) {
sum += i;
}
System.out.println("sum(a) = " + sum);
відбитки
sum(a) = 20
ArrayListне містить щось, що "підсумовується"? ArrayList та масив - це не обов'язково одне і те ж. Що стосується підсумовування чисел у масиві, це дуже простий цикл for по елементах та обчислення сукупної суми.