Ответ 1
Вы можете использовать Collections.swap(List<?> list, int i, int j);
Как поменять первый и последний элементы ArrayList
?
Я знаю, как обменивать элементы массива: установка временного значения для хранения первого элемента, позволяя первому элементу равняться последнему элементу, а затем позволяя последнему элементу равняться сохраненному первому элементу.
int a = values[0];
int n = values.length;
values[0] = values[n-1];
values[n-1] = a;
Итак, для ArrayList<String>
было бы так?
String a = words.get(0);
int n = words.size();
words.get(0) = words.get(n-1);
words.get(n-1) = a
Вы можете использовать Collections.swap(List<?> list, int i, int j);
В Java вы не можете установить значение в ArrayList, назначив ему, есть способ set()
для вызова:
String a = words.get(0);
words.set(0, words.get(words.size() - 1));
words.set(words.size() - 1, a)
Используйте это. Вот онлайн-компиляция кода. Взгляните http://ideone.com/MJJwtc
public static void swap(List list,
int i,
int j)
Сворачивает элементы в указанных позициях в указанном списке. (Если указанные позиции равны, вызов этого метода оставляет список без изменений.)
Параметры: list - Список для замены элементов. i - индекс одного элемента, который должен быть заменен. j - индекс другого элемента, подлежащего обмену.
Прочитать официальные документы коллекции
import java.util.*;
import java.lang.*;
class Main {
public static void main(String[] args) throws java.lang.Exception
{
//create an ArrayList object
ArrayList words = new ArrayList();
//Add elements to Arraylist
words.add("A");
words.add("B");
words.add("C");
words.add("D");
words.add("E");
System.out.println("Before swaping, ArrayList contains : " + words);
/*
To swap elements of Java ArrayList use,
static void swap(List list, int firstElement, int secondElement)
method of Collections class. Where firstElement is the index of first
element to be swapped and secondElement is the index of the second element
to be swapped.
If the specified positions are equal, list remains unchanged.
Please note that, this method can throw IndexOutOfBoundsException if
any of the index values is not in range. */
Collections.swap(words, 0, words.size() - 1);
System.out.println("After swaping, ArrayList contains : " + words);
}
}
Пример компиляции Oneline http://ideone.com/MJJwtc
for (int i = 0; i < list.size(); i++) {
if (i < list.size() - 1) {
if (list.get(i) > list.get(i + 1)) {
int j = list.get(i);
list.remove(i);
list.add(i, list.get(i));
list.remove(i + 1);
list.add(j);
i = -1;
}
}
}