In this guide, you will learn how to rotate a list in Java. Rotation means shifting of elements, for example rotating a list to right by 2 position means 1st element becomes 3rd element, 2nd element becomes 4th element and so on. We will see two examples to rotate a list:
1. Using Collections.rotate()
You can use Collections.rotate()
method to rotate a List. This method belongs to java.util.Collections
class. Let’s see an example to understand the usage:
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class RotateList {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
System.out.println("Original list: " + list);
// Rotate the list by 2 positions to the right
Collections.rotate(list, 2);
System.out.println("Rotated list: " + list);
}
}
In this example, the list [1, 2, 3, 4, 5]
is rotated by 2 positions to the right, the output list is [4, 5, 1, 2, 3]
.
2. Manual Rotation
If you do not want to use the Collections.rotate()
method, you can write a logic to manually rotate the list as shown below:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class RotateListManual {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
System.out.println("Original list: " + list);
// Rotate the list by 2 positions to the right
int k = 2;
rotate(list, k); // user defined method
System.out.println("Rotated list: " + list);
}
public static void rotate(List<Integer> list, int k) {
int size = list.size();
k = k % size; // In case k is greater than size of the list
if (k < 0) {
k += size; // In case k is negative
}
reverse(list, 0, size - 1);
reverse(list, 0, k - 1);
reverse(list, k, size - 1);
}
private static void reverse(List<Integer> list, int start, int end) {
while (start < end) {
Integer temp = list.get(start);
list.set(start, list.get(end));
list.set(end, temp);
start++;
end--;
}
}
}
The output is same as above. It is best to use the rotate()
method instead of using this manual code, however sometimes, this logic is asked in interviews and tests.
Leave a Reply