【问题标题】:Collection.reverse() method not working on an Integer ArrayList [closed]Collection.reverse() 方法不适用于 Integer ArrayList [关闭]
【发布时间】:2021-08-08 13:32:49
【问题描述】:

java中的Collection.reverse()方法似乎不适用于我制作的Integer类型数组列表。

    List<Integer> mylist = new ArrayList<Integer>();
    mylist.add(33);
    mylist.add(304);
    mylist.add(25);
    mylist.add(67);

    Collections.reverse(mylist);

    System.out.println(mylist);

实际输出为:[67,25,304,33]

我预计输出是 304,67,33,25

【问题讨论】:

标签: java collections


【解决方案1】:

reverse 只是颠倒了定位 - 看起来你想通过它的自然顺序反向排序,所以使用 Collections.sortCollections.reverseOrder 的便捷方法来生成反向比较器:

    List<Integer> mylist = new ArrayList<Integer>();
    mylist.add(33);
    mylist.add(304);
    mylist.add(25);
    mylist.add(67);

    System.out.println("Before                  : "+mylist);

    Collections.reverse(mylist);
    System.out.println("Positional reverse      : "+mylist);        

    // start with original ordering
    mylist.clear();
    mylist.add(33);
    mylist.add(304);
    mylist.add(25);
    mylist.add(67);
    
    Collections.sort(mylist, Collections.reverseOrder());
    System.out.println("Natural ordering reverse: "+mylist);        

生产:

Before                  : [33, 304, 25, 67]
Positional reverse      : [67, 25, 304, 33]
Natural ordering reverse: [304, 67, 33, 25]

【讨论】:

  • 或者只是mylist.sort(Comparator.reverseOrder());
猜你喜欢
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 2023-03-25
  • 1970-01-01
  • 2016-11-22
相关资源
最近更新 更多