Списки допускают дублирование элементов, а наборы допускают только один экземпляр.
Я буду использовать карту всякий раз, когда мне понадобится выполнить поиск.
Для конкретных реализаций существуют сохраняющие порядок варианты карт и наборов, но в основном все сводится к скорости. Я склонен использовать ArrayList для относительно небольших списков и HashSet для достаточно небольших наборов, но есть много реализаций (включая любые, которые вы пишете сами). HashMap довольно распространен для Карт. Что-то большее, чем «разумно маленький», и вам нужно начать беспокоиться о памяти, чтобы это было более определенным алгоритмически.
Эта страница содержит лотов анимированных изображений вместе с тестированием кода LinkedList против ArrayList, если вас интересуют жесткие числа.
РЕДАКТИРОВАТЬ: Я надеюсь, что следующие ссылки демонстрируют, как эти вещи на самом деле являются просто элементами в наборе инструментов, вам просто нужно подумать о своих потребностях: См. Версии Commons-Collections Map , Список и Набор .