无法尝试反转数组列表

时间:2016-04-13 08:26:14

标签: java arrays list collections

我试图反转一个数组投票列表以获得优先权(即投票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)

期间仍然存在错误

2 个答案:

答案 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