Ist es besser, ein TreeSet oder eine ArrayList zu verwenden, wenn Sie einen benutzerdefinierten Komparator verwenden?

Ich habe ein Diagramm implementiert. Ich möchte eine bestimmte Untergruppe von Scheitelpunkten in Bezug auf ihre Grade sortieren. Deshalb habe ich einen benutzerdefinierten Komparator namens geschriebenDegreeComparator.

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());
    }

}

Welches der folgenden Verfahren ist effizienter?

VerwendenTreeSet

public Collection<Integer> sort(Collection<Integer> unsorted)
{
    Set<Integer> sorted = new TreeSet<Integer>(new DegreeComparator());
    sorted.addAll(unsorted);
    return sorted;
}

VerwendenArrayList

Collections.sort(unsorted, new DegreeComparator());

Beachten Sie, dass der zweite Ansatz keine Funktion, sondern ein einzeiliger Code ist.

Intuitiv würde ich lieber die zweite wählen. Ich bin mir aber nicht sicher, ob es effizienter ist.