Не уверен, с какими ограничениями вы работаете здесь (т.е. это может занять слишком много памяти в зависимости от размера строк), но если вам нужно поддерживать связанный список, вы можете создать HashMap, который отображает строки в их положение в списке, которое позволит вам извлечь любую строку из списка с 2 операциями с постоянным временем.