我正在尝试反转投票数组列表以产生偏好(即投票 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() 用于创建投票的深拷贝,以便不更改它并返回新的 Vote 对象。在 Collections.reverse(invVote) 期间仍然出现错误
最佳答案
是的,这可以使用集合来完成,您只需调用方法 Collections.reverse ...
public static void reverse(List<?> list)
Reverses the order of the elements in the specified list.
This method runs in linear time.
示例:
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 类而不是整数,并使该类实现您定义排序逻辑的可比较接口(interface)....
关于java - 尝试反转数组列表时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36592653/