我试图反转一个数组投票列表以获得优先权(即投票2,4,1,3,反转后为3,1,4,2。指数偏好为3) 。我相信这可以通过集合来完成,但列表是不同的类型(类型投票)。当我无法在投票上使用集合方法时,只需要一些关于如何对此首选顺序进行排序的指导。
public Vote invertVote() {
VoteList invVote = (VoteList) ((Vote) vote).copyVote();
Iterator<Integer> iter = invVote.iterator();
while(iter.hasNext()){
iter.next();
Collections.reverse(invVote);
}
return invVote;
}
注意投票是代表单一投票的整数集合。 VoteList实现投票。 copyVote()用于创建投票的深层副本,以便不更改它并返回新的投票对象。在Collections.reverse(invVote)
期间仍然存在错误答案 0 :(得分:2)
是的,这可以使用您只需要调用方法Collections.reverse ...
的集合来完成public static void reverse(List<?> list)
反转指定列表中元素的顺序。
这种方法 以线性时间运行。
public static void main(String[] args) {
Random rnd = new Random();
List<Integer> myInteger = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
myInteger.add(rnd.nextInt(10));
}
// the list
System.out.println(myInteger);
// the list sorted
Collections.sort(myInteger);
System.out.println(myInteger);
// the list inverted
Collections.reverse(myInteger);
System.out.println(myInteger);
}
在你的情况下使用类Votes而不是integer,并让类实现你定义排序逻辑的类似接口....
答案 1 :(得分:1)
您可以使用Collections.reverse(list);
check documentation。