Список действительно не подходит для этого. Прежде всего, binarySearch в лучшем случае выполнит O (N) для связного списка - поскольку список не поддерживает произвольный доступ, вы ничего не получите, отсортировав его.
То, что вы ищете, это три . Вики-страница описывает преимущества и то, как это работает достаточно хорошо, чтобы я не тратил свое время на попытки превзойти его. Хотя он не описывает преимущества перед отсортированным LinkedList, просто помните, что вставка в отсортированный LinkedList - это O (N) обходов ссылок и O (log n) сравнений элементов, как и поиск объекта. Это более эффективно и все еще поддерживает все операции, которые вы получили бы из отсортированного связанного списка.
Google находит несколько результатов для библиотек, которые поддерживают такую структуру, как эта , но я не использовал ни одну из них. Это все еще довольно простая структура данных (по сравнению, например, с деревьями AVL), поэтому вы можете легко реализовать ее самостоятельно.