Yup, it's the same terrain.
I've made something like this in the past. And I did it exactly because `List<Foo>` was too expensive and slow.
class FooSOA extends Collection<Foo> {
double x[];
double y[];
double z[];
Foo get(int index) { return new Foo(index); }
record Foo(int index) {
double x() { return FooSOA.this.x[i]; }
double y() { return FooSOA.this.y[i]; }
double z() { return FooSOA.this.z[i]; }
}
}