我已经实现了一个图表。
我想根据顶点的度数对给定的顶点子集进行排序。
因此,我编写了一个名为 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());
请注意,第二种方法不是函数,而是单行代码。
凭直觉,我宁愿选择第二个。但我不确定它是否更有效率。
最佳答案
Java API 包含大量的 Collection 和 Map 实现,因此可能会混淆使用哪一个。这是一个快速流程图,可能有助于从最常见的实现中进行选择
关于java - 使用自定义比较器时使用 TreeSet 还是 ArrayList 更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24371204/