Как я могу сдвинуть список массивов влево на 2 поста?

#java

#java

Вопрос:

Например, есть arraylist: 40 8 6 3 7 5 2, и я хочу сдвинуть их влево на 2 поста. И тогда ожидаемый результат равен 6 3 7 5 2. Я написал следующий код, но он ничего не генерирует

Код: импортируйте java.util.ArrayList;

 class ArrayLinearListRev extends ArrayLinearList{
public ArrayList<Integer> leftSh(int post, ArrayList<Integer> 
alist2)
{
   ArrayList<Integer> LeftshifedList = new ArrayList<Integer    
();
   for (int i = alist2.size(); i <= post; i  )
   {
       LeftshifedList.remove(alist2.get(i));
   }

   return LeftshifedList;

 }

 public void printElements(ArrayList<Integer> alist2)
 {
    for (int i = 0; i < alist2.size(); i  ) {
        System.out.print(alist2.get(i)   " ");
    }
 }
 }

public class ArrayLinearListFun  {
public static void main(String[] args)
{
    ArrayLinearListRev obj = new ArrayLinearListRev();
    ArrayList<Integer> x = new ArrayList<Integer>();
    x.add(0, new Integer(2));
    x.add(1, new Integer(5));
    x.add(2, new Integer(7));
    x.add(3, new Integer(3));
    x.add(4, new Integer(6));
    x.add(5, new Integer(8));
    x.add(6, new Integer(40));
    System.out.print("The list is: ");
    obj.printElements(x);
    x=obj.leftSh(2, x);
    System.out.print("nThe list is: ");
    obj.printElements(x);
 }
 }
  

Ответ №1:

Ваш leftSh метод возвращает пустое List значение. Предполагая, что вы не хотите, чтобы ваш метод изменял оригинал List , вы должны инициализировать LeftshifedList , чтобы он был копией оригинала List .

Вам просто нужно удалить элемент по индексу 0 и повторить post несколько раз.

 public ArrayList<Integer> leftSh(int post, ArrayList<Integer> alist2)
{
    ArrayList<Integer> LeftshifedList = new ArrayList<>(alist2); // create a copy of input List
    for (int i = 1; i <= post; i  ) { // remove the first post elements
        LeftshifedList.remove(0); 
    }
    return LeftshifedList;
}
  

Ответ №2:

Просто удалите первые два элемента.

 public ArrayList<Integer> leftSh(int post, ArrayList<Integer>  alist2) {

  alist2.remove(0);
  alist2.remove(0);
  return alist2;
}
  

Комментарии:

1. Это приводит к желаемому результату, только если post == 2 .