При обработке больших объемов данных я часто обнаруживаю, что делаю следующее:
HashSet<String> set = new HashSet<String> ();
//Adding elements to the set
ArrayList<String> list = new ArrayList<String> (set);
Что-то вроде "демпинга" содержимого набора в списке. Обычно я делаю это, так как элементы, которые я добавляю, часто содержат дубликаты, которые я хочу удалить, и это кажется простым способом их удалить.
Учитывая только эту цель (избегая дубликатов), я мог бы также написать:
ArrayList<String> list = new ArrayList<String> ();
// Processing here
if (! list.contains(element)) list.add(element);
//More processing here
И, следовательно, не нужно "сбрасывать" набор в список. Тем не менее, я бы выполнил небольшую проверку перед вставкой каждого элемента (который я также предполагаю, что HashSet)
Является ли какая-либо из двух возможностей более эффективной?