The road from Java 8 to Java 11

It is very easy to implement Triangular number with this new methods. Let’s explore the solution with JShell:

jshell> int[] array = new int[10]
array ==> int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }

jshell> Arrays.setAll(array, idx -> idx + 1)

jshell> array
array ==> int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }

jshell> Arrays.parallelPrefix(array, (acc, e) -> acc + e)

jshell> array
array ==> int[10] { 1, 3, 6, 10, 15, 21, 28, 36, 45, 55 }
jshell> int[] triangularNumber(int n) {
   ...>   int[] result = new int[n];
   ...>   Arrays.parallelSetAll(result, idx -> idx + 1);
   ...>   Arrays.parallelPrefix(result, (acc, e) -> acc + e);
   ...>   return result;
   ...> }
|  created method triangularNumber(int)

jshell> triangularNumber(4)
$1 ==> int[4] { 1, 3, 6, 10 }

jshell> triangularNumber(10)
$2 ==> int[10] { 1, 3, 6, 10, 15, 21, 28, 36, 45, 55 }

jshell> triangularNumber(100)
$3 ==> int[100] { 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, 1326, 1378, 1431, 1485, 1540, 1596, 1653, 1711, 1770, 1830, 1891, 1953, 2016, 2080, 2145, 2211, 2278, 2346, 2415, 2485, 2556, 2628, 2701, 2775, 2850, 2926, 3003, 3081, 3160, 3240, 3321, 3403, 3486, 3570, 3655, 3741, 3828, 3916, 4005, 4095, 4186, 4278, 4371, 4465, 4560, 4656, 4753, 4851, 4950, 5050 }