1
在我的程序中,我有一个边缘集合,它们必须按重量排序。去除元素的最佳集合
程序中的某处我必须处理集合,并且每次我必须删除最大集合。
我已经使用了一个ArrayList,但是我正在寻找一个更好的解决方案(时间效率):
public class Edge implements Comparable<Edge> {
private int weight;
public void setWeight(int weight) {
this.weight = weight;**
}
@Override
public int compareTo(Edge o) {
return o.weight - this.weight;
}
}
我做了什么:
private ArrayList<Edge> listOfEdges = new ArrayList<>();
// i suppose here adding some edges in the list
Collections.sort(listOfEdges);
for (int i = 0; i < listOfEdges.size(); i++) {
System.out.println(listOfEdges.get(i).getWeight() + " ");
}
我怎么能得到&删除列表的最大值。 我已经测试了一个treeSet,但边缘可以具有相同的权重,那么接受重复值的完美Sorted Collection是什么。
谢谢
各自的方法。如果它进行排序,然后只是删除最后一个项目,或者至少从最终迭代向后 –
也许优先级队列或最大堆?可以快速删除并排序 –
谢谢@ cricket_007,我将使用priorityQueue。 –