Лучше ли использовать TreeSet или ArrayList при использовании пользовательского компаратора
Я реализовал график. Я хочу отсортировать заданное подмножество вершин относительно их степеней. Поэтому я написал собственный компаратор с именемDegreeComparator
.
private class DegreeComparator implements Comparator<Integer>
{
@Override
public int compare(Integer arg0, Integer arg1)
{
if(adj[arg1].size() == adj[arg0].size()) return arg1 - arg0;
else return adj[arg1].size() - adj[arg0].size());
}
}
Итак, что из нижеперечисленного является более эффективным?
С помощьюTreeSet
public Collection<Integer> sort(Collection<Integer> unsorted)
{
Set<Integer> sorted = new TreeSet<Integer>(new DegreeComparator());
sorted.addAll(unsorted);
return sorted;
}
С помощьюArrayList
Collections.sort(unsorted, new DegreeComparator());
Обратите внимание, что второй подход - это не функция, а однострочный код.
Интуитивно я предпочел бы выбрать второй. Но я не уверен, что это более эффективно.