Java выделяет непрерывную память из ОС при запуске.Как только у него есть память, необходимая для кучи, он контролирует, как выделяется память.
Память в Java выделяется непрерывно, поэтому весьма вероятно, что каждый объект появится в памяти в том порядке, в котором он был выделен.(Но это не гарантируется) Кроме того, если объект сохраняется в небольшой коллекции, он, вероятно, будет скопирован в порядке обнаружения объектов.(опять же не гарантировано)
Лично я бы использовал ArrayList, если вы ожидаете произвольного доступа, и LinkedList, если вы хотите вставить куда-либо, кроме конца списка.
Java работает очень плохо, если естьиз него обменивается на диск.Я бы посоветовал убедиться, что он достаточно мал, чтобы постоянно помещаться в память.Его поведение в кеше нелегко контролировать, и лучшее, что вы можете сделать, - это поэкспериментировать с тем, как JVM оптимизирует ваш код и его поведение при кэшировании.