Самый эффективный способ реализовать отсортированный список, как вы хотите, - это реализовать индексируемый скипист, как здесь: Wikipedia: Indexable skiplist . Это позволило бы иметь вставки / удаления в O (log (n)) и позволяло бы иметь индексированный доступ в одно и то же время. И это также позволило бы дублировать.
Skiplist - довольно интересная и, я бы сказал, недооцененная структура данных. К сожалению, в библиотеке баз данных Java нет реализации skiplist, но вы можете использовать одну из реализаций с открытым исходным кодом или реализовать ее самостоятельно.