用于旋转列表元素的Java程序
List 是一个有序的对象集合,其中可以存储重复的值。由于 List 保留了插入顺序,因此它允许元素的位置访问和插入。在本文中,我们将看到如何旋转列表的元素。让我们考虑以下列表。
列表中有两种类型的旋转。它们是右旋和左旋。四次右旋后,列表如下所示:
方法一:(不使用内置方法)
为正确旋转而工作
- 首先将列表的最后一个元素存储在一个临时变量中。
- 将一个位置的元素向右移动。
- 现在使用临时变量中的值更改列表的第一个元素值。
- 将临时变量的值更新为新的最后一个元素。
- 重复上述步骤需要多次旋转。
例子:
Java
// Java Program to Rotate Elements of the List
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
// creating ArrayList
List my_list = new ArrayList<>();
my_list.add(10);
my_list.add(20);
my_list.add(30);
my_list.add(40);
my_list.add(50);
my_list.add(60);
my_list.add(70);
// Printing list before rotation
System.out.println(
"List Before Rotation : "
+ Arrays.toString(my_list.toArray()));
// Loop according to the number of rotations
for (int i = 0; i < 4; i++) {
// storing the last element in the list
int temp = my_list.get(6);
// traverse the list and move elements to right
for (int j = 6; j > 0; j--) {
my_list.set(j, my_list.get(j - 1));
}
my_list.set(0, temp);
}
// Printing list after rotation
System.out.println(
"List After Rotation : "
+ Arrays.toString(my_list.toArray()));
}
}
Java
// Java Program to Rotate Elements of the List
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
// creating array list
List my_list = new ArrayList<>();
my_list.add(10);
my_list.add(20);
my_list.add(30);
my_list.add(40);
my_list.add(50);
my_list.add(60);
my_list.add(70);
// Printing list before rotation
System.out.println(
"List Before Rotation : "
+ Arrays.toString(my_list.toArray()));
// Loop according to the number of rotations
for (int i = 0; i < 4; i++) {
// storing the first element in the list
int temp = my_list.get(0);
// traverse the list and move elements to left
for (int j = 0; j < 6; j++) {
my_list.set(j, my_list.get(j + 1));
}
my_list.set(6, temp);
}
// Printing list after rotation
System.out.println(
"List After Rotation : "
+ Arrays.toString(my_list.toArray()));
}
}
Java
// Java Program to Rotate Elements of the List
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
// creating array list
List my_list = new ArrayList<>();
my_list.add(10);
my_list.add(20);
my_list.add(30);
my_list.add(40);
my_list.add(50);
my_list.add(60);
my_list.add(70);
// Printing list before rotation
System.out.println(
"List Before Rotation : "
+ Arrays.toString(my_list.toArray()));
// Rotating the list at distance 4
Collections.rotate(my_list, 4);
// Printing list after rotation
System.out.println(
"List After Rotation : "
+ Arrays.toString(my_list.toArray()));
}
}
Java
// Java Program to Rotate Elements of the List
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
// creating array list
List my_list = new ArrayList<>();
my_list.add(10);
my_list.add(20);
my_list.add(30);
my_list.add(40);
my_list.add(50);
my_list.add(60);
my_list.add(70);
// Printing list before rotation
System.out.println(
"List Before Rotation : "
+ Arrays.toString(my_list.toArray()));
// Rotating the list at distance -3
Collections.rotate(my_list, -4);
// Printing list after rotation
System.out.println(
"List After Rotation : "
+ Arrays.toString(my_list.toArray()));
}
}
输出
List Before Rotation : [10, 20, 30, 40, 50, 60, 70]
List After Rotation : [40, 50, 60, 70, 10, 20, 30]
向左旋转四次后,列表如下所示:
为左旋而工作
- 首先将列表的第一个元素存储在一个临时变量中。
- 将一个位置的元素向左移动。
- 现在使用临时变量中的值更改列表的最后一个元素值。
- 将临时变量的值更新为新的第一个元素。
- 重复上述步骤需要多次旋转。
例子
Java
// Java Program to Rotate Elements of the List
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
// creating array list
List my_list = new ArrayList<>();
my_list.add(10);
my_list.add(20);
my_list.add(30);
my_list.add(40);
my_list.add(50);
my_list.add(60);
my_list.add(70);
// Printing list before rotation
System.out.println(
"List Before Rotation : "
+ Arrays.toString(my_list.toArray()));
// Loop according to the number of rotations
for (int i = 0; i < 4; i++) {
// storing the first element in the list
int temp = my_list.get(0);
// traverse the list and move elements to left
for (int j = 0; j < 6; j++) {
my_list.set(j, my_list.get(j + 1));
}
my_list.set(6, temp);
}
// Printing list after rotation
System.out.println(
"List After Rotation : "
+ Arrays.toString(my_list.toArray()));
}
}
输出
List Before Rotation : [10, 20, 30, 40, 50, 60, 70]
List After Rotation : [50, 60, 70, 10, 20, 30, 40]
方法 2:(使用Collections.rotate(list, distance)方法进行旋转)
可以使用Java Collections 直接执行左右旋转。
句法
Collections.rotate(list_name , distance)
参数:
- list_name:列表的名称。
- 距离:距离是我们必须旋转的元素数量。
返回:它返回一个旋转的列表。
注意:负距离给出左旋转,而正距离给出右旋转。
示例:使用正距离获得正确的旋转。
Java
// Java Program to Rotate Elements of the List
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
// creating array list
List my_list = new ArrayList<>();
my_list.add(10);
my_list.add(20);
my_list.add(30);
my_list.add(40);
my_list.add(50);
my_list.add(60);
my_list.add(70);
// Printing list before rotation
System.out.println(
"List Before Rotation : "
+ Arrays.toString(my_list.toArray()));
// Rotating the list at distance 4
Collections.rotate(my_list, 4);
// Printing list after rotation
System.out.println(
"List After Rotation : "
+ Arrays.toString(my_list.toArray()));
}
}
输出
List Before Rotation : [10, 20, 30, 40, 50, 60, 70]
List After Rotation : [40, 50, 60, 70, 10, 20, 30]
示例:使用负距离获得左旋转。
Java
// Java Program to Rotate Elements of the List
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
// creating array list
List my_list = new ArrayList<>();
my_list.add(10);
my_list.add(20);
my_list.add(30);
my_list.add(40);
my_list.add(50);
my_list.add(60);
my_list.add(70);
// Printing list before rotation
System.out.println(
"List Before Rotation : "
+ Arrays.toString(my_list.toArray()));
// Rotating the list at distance -3
Collections.rotate(my_list, -4);
// Printing list after rotation
System.out.println(
"List After Rotation : "
+ Arrays.toString(my_list.toArray()));
}
}
输出
List Before Rotation : [10, 20, 30, 40, 50, 60, 70]
List After Rotation : [50, 60, 70, 10, 20, 30, 40]