I’ve been playing around with ArrayLists. What I’m trying to achieve is a method to do something like this:
Item 1
Item 2
Item 3
Item 4
I’m trying to be able to move items up in the list, unless it is already at the top in which case it will stay the same. For example, if item 3 was moved the list would be:
Item 1
Item 3
Item 2
Item 4
From my small understanding at the moment then I would want something along the lines of:
IF arrayname index is not equal to 0
THEN move up
ELSE do nothing
The part I’m struggling with is the “move up” part. Any tips or code samples of how this could be achieved are much appreciated.
I came across this old question in my search for an answer, and I thought I would just post the solution I found in case someone else passes by here looking for the same.
For swapping 2 elements, Collections.swap is fine. But if we want to move more elements, there is a better solution that involves a creative use of Collections.sublist and Collections.rotate that I hadn’t thought of until I saw it described here:
http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#rotate%28java.util.List,%20int%29
Here’s a quote, but go there and read the whole thing for yourself too: