-4

the Collection.reverse() method in java doesn't seem to work with the Integer type array list I made.

    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);

The actual output is: [67, 25, 304, 33]

I expected the output to be 304,67,33,25

XD_Cat
  • 1
  • 2
    Probably want `reverseOrder` - `reverse` simply reverses the positioning. –  Aug 08 '21 at 13:36
  • Does this answer your question? [Reverse a comparator in Java 8](https://stackoverflow.com/questions/32995559/reverse-a-comparator-in-java-8) – Joe Aug 08 '21 at 13:51

1 Answers1

1

reverse simply reverses the positioning - looks like you want to sort by its natural ordering in reverse so use Collections.sort with the convenience method of Collections.reverseOrder to produce the reverse comparator:

    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);        

Produces:

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