Что вы хотите, это двоичное дерево поиска. Он поддерживает упорядоченный порядок, предлагая логарифмический доступ для поиска, удаления и вставки (если у вас нет вырожденного дерева, а затем оно линейно). Это довольно просто реализовать, и вы даже можете заставить его реализовать интерфейс List, но тогда индексный доступ становится сложным.
Второй подход заключается в том, чтобы иметь ArrayList, а затем реализацию сорта пузырьков. Поскольку вы вставляете или удаляете один элемент за раз, время доступа для вставок и абзацев является линейным. Поиски являются логарифмическими и постоянными доступа к индексу (времена могут быть разными для LinkedList). Единственный код, который вам нужен, - 5, может быть, 6 строк пузырьковой сортировки.