Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ArrayList;
- import java.util.*;
- import java.util.stream.Collectors;
- public class E04ListOperations {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- List<Integer> numbersList = Arrays.stream(scan.nextLine().split(" "))
- .map(Integer::parseInt)
- .collect(Collectors.toList());
- String command = scan.nextLine();
- int number = 0;
- int index = 0;
- while (!"End".equals(command)) {
- String[] commandArr = command.split(" ");
- switch (commandArr[0]) {
- // · Add {number} - add number at the end
- // [1] - number
- case "Add":
- number = Integer.parseInt(commandArr[1]);
- numbersList.add(number);
- break;
- // · Insert {number} {index} - insert number at given index
- // [1] - number
- // [2] - index
- case "Insert":
- // Валиден индекс
- if (isValidIndex(index, numbersList)) {
- number = Integer.parseInt(commandArr[1]);
- index = Integer.parseInt(commandArr[2]);
- numbersList.add(index, number);
- // Невалиден индекс
- } else {
- System.out.println("Invalid index");
- }
- break;
- // · Remove {index} - remove that index
- // [1] - index
- case "Remove":
- index = Integer.parseInt(commandArr[1]);
- // Валиден индекс
- if (isValidIndex(index, numbersList)) {
- numbersList.remove(index);
- // Невалиден индекс
- } else {
- System.out.println("Invalid index");
- }
- break;
- case "Shift":
- String direction = commandArr[1];
- int rotations = Integer.parseInt(commandArr[2]);
- // · Shift left {count} - first number becomes last 'count' times // [1] - direction // [2] - number of rotations
- if (direction.equals("left")) {
- rotateListLeft(numbersList, rotations);
- // · Shift right {count} - last number becomes first 'count' times // [1] - direction // [2] - number of rotations
- } else {
- Collections.rotate(numbersList, rotations);
- }
- break;
- }
- command = scan.nextLine();
- }
- for (int item : numbersList) {
- System.out.print(item + " ");
- }
- }
- public static boolean isValidIndex (int index, List<Integer> numbersList) {
- return (index >= 0 && index <= numbersList.size() - 1);
- }
- private static void rotateListLeft (List<Integer> numbersList, int rotations) {
- int savedNumber = 0;
- for (int index = 0; index < rotations; index++) {
- // Запазваме първия елемент
- savedNumber = numbersList.get(0);
- // Премахваме първия елемент
- numbersList.remove(0);
- // Добавяме първия елемент на последна позиция
- numbersList.add(savedNumber);
- }
- }
- // private static void rotateListRight (List<Integer> numbersList, int rotations) {
- // int savedNumber = 0;
- // for (int index = 0; index < rotations; index++) {
- //// Запазваме последния елемент
- // savedNumber = numbersList.get(numbersList.size() - 1);
- //// Премахваме последния елемент
- // numbersList.remove(numbersList.size() - 1);
- //// Слагаме последния елемент на първа позиция
- // numbersList.add(0, savedNumber);
- // }
- // }
- }
Advertisement
Add Comment
Please, Sign In to add comment