Для такого доступа вы действительно должны использовать массив или, что лучше, HashMap. Использование списка для этого очень неэффективно и излишне сложно. Если вы удаляете элемент из середины списка, все будет двигаться вниз, а все индексы выше того, что вы удалили, потребуют перемещения вниз.
Массив InfoForTheThread не пострадает от этого, но вам нужно знать размер массива, который вам понадобится, прежде чем начать.
Вместо этого используйте HashMap - вы можете использовать целые числа для ключей, и удаление не приведет к повторному упорядочению.
HashMap<Integer,InfoForTheThread> myInfos = new HashMap<Integer,InfoForTheThread>( 10 );
Добавление, получение и удаление записи:
myInfos.put( Integer.valueOf( 4 ), new InfoForTheThread() );
InfoForTheThread infoForFour = myInfos.get( Integer.valueOf( 4 ) );
InfoForTheThread infoForFour = myInfos.remove( Integer.valueOf( 4 ) );