#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
.