Массив пар или пара массивов?
В ситуации, когда нужно хранить множество пар, кортежей, точек и т. п., есть несколько решений.
В интернете встречал информацию о том, что в JVM наивный вариант (1) медленнее, чем «вывернутый наизнанку» вариант (2). Это правда: во втором варианте данные лежат плотнее, больше шансов попадания в кэши процессора.
Но я бы предложил вариант (3). Именно так массив структур лежал бы в C++ или Rust. Тут и память сэкономлена, и прыжков по указателям меньше.