É melhor usar um TreeSet ou ArrayList ao usar um comparador personalizado
Eu implementei um gráfico. Eu quero classificar um determinado subconjunto de vértices em relação aos seus graus. Portanto, escrevi um comparador personalizado chamadoDegreeComparator
.
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());
}
}
Então, qual das alternativas abaixo é mais eficiente?
UsandoTreeSet
public Collection<Integer> sort(Collection<Integer> unsorted)
{
Set<Integer> sorted = new TreeSet<Integer>(new DegreeComparator());
sorted.addAll(unsorted);
return sorted;
}
UsandoArrayList
Collections.sort(unsorted, new DegreeComparator());
Observe que a segunda abordagem não é uma função, mas um código de uma linha.
Intuitivamente, prefiro escolher o segundo. Mas não tenho certeza se é mais eficiente.