Использование цикла «для каждого» для обращения ArrayList в Java - PullRequest
0 голосов
/ 25 сентября 2018

У меня проблемы с созданием метода для решения домашней задачи, чтобы поменять местами ArrayList, чтобы, например, 1 2 3 4 5 стало бы 5 4 3 2 1. Я знаю о Collections.reverse, но яя не могу использовать его, и я не могу использовать обычный цикл for, это должен быть цикл «для каждого», поэтому «for (String book: books) { ... }».Я знаю, что используя обычный цикл for, я мог бы использовать две итерирующие переменные i и j, чтобы я мог поменять местами значения первого и последнего индекса, чтобы изменить его, но в каждом цикле вы не можетесделай это.Любая помощь будет оценена.Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вы можете сделать это, используя синтаксис forEach.

List<Integer> intValues = new ArrayList<Integer>();
intValues.add(1);
intValues.add(2);
intValues.add(3);
intValues.add(4);
intValues.add(5);


 IntStream.range(0, intValues.size()).forEach(v -> System.out.print(intValues.get((intValues.size()-1)-v)));
0 голосов
/ 25 сентября 2018

В этом примере с использованием for each вы создаете переменную, содержащую количество строк внутри arrayList, а затем используете обычный цикл for each для прохождения целого arrayList, но вы печатаете на позиции i и уменьшаете i каждый раз

int i = books.size() - 1;
for(String b: books){
 newList.add(books[i]);
 System.out.println(books[i]);
i--;
}

Это пример переключения внутри одного arrayList.

int i = books.size() - 1;
String helpString;
for(int n = 0; n <= books/2 ; n++){
helpString = books[n];
books[n] = books[i];
books[i] = helpString;

i--;
}
...