ОП спросил, как решить эту проблему без петли !По некоторым причинам в наши дни модно избегать петель.Почему это?Вероятно, есть осознание того, что использование map
, reduce
, filter
, друзей и таких методов, как each
, скрывают циклы и сокращают программные ошибки, и это довольно круто.То же самое касается действительно хороших конвейеров Unix.Или код JQuery.Вещи просто отлично выглядят без циклов.
Но есть ли в Java метод map
?Не совсем, но мы могли бы определить один с Function
интерфейсом с помощью метода eval
или exec
.Это не слишком сложно и будет хорошим упражнением.Это может быть дорого и не использоваться на практике.
Другой способ сделать это без цикла - использовать хвостовую рекурсию.Да, это глупо, и никто бы не использовал его на практике, но это показывает, может быть, что циклы в этом случае хороши.Тем не менее, просто для того, чтобы показать «еще один пример без петель» и повеселиться, вот что:
import java.util.Arrays;
public class FillExample {
private static void fillRowsWithZeros(double[][] a, int rows, int cols) {
if (rows >= 0) {
double[] row = new double[cols];
Arrays.fill(row, 0.0);
a[rows] = row;
fillRowsWithZeros(a, rows - 1, cols);
}
}
public static void main(String[] args) {
double[][] arr = new double[20][4];
fillRowsWithZeros(arr, arr.length - 1, arr[0].length);
System.out.println(Arrays.deepToString(arr));
}
}
Это не красиво, но в ответе на вопрос ОП нет никаких явных петли.