Comment permuter les premier et dernier éléments d'un ArrayList
? Je sais comment échanger les éléments d'un tableau: définir une valeur temporaire pour stocker le premier élément, laisser le premier élément égal au dernier élément, puis laisser le dernier élément égal au premier élément stocké.
int a = values[0];
int n = values.length;
values[0] = values[n-1];
values[n-1] = a;
Donc pour un ArrayList<String>
serait-ce comme ça?
String a = words.get(0);
int n = words.size();
words.get(0) = words.get(n-1);
words.get(n-1) = a
Vous pouvez utiliser Collections.swap(List<?> list, int i, int j);
En Java, vous ne pouvez pas définir de valeur dans ArrayList en lui attribuant une méthode set()
à appeler:
String a = words.get(0);
words.set(0, words.get(words.size() - 1));
words.set(words.size() - 1, a)
Utilisez comme ça. Voici la compilation en ligne du code. Jetez un oeil http://ideone.com/MJJwtc
public static void swap(List list,
int i,
int j)
Echange les éléments aux positions spécifiées dans la liste spécifiée. (Si les positions spécifiées sont égales, l'appel de cette méthode laisse la liste inchangée.)
Paramètres: list - La liste dans laquelle échanger des éléments. i - l'indice d'un élément à échanger. j - l'index de l'autre élément à échanger.
Lire la documentation officielle de la collection
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);
}
}
Exemple de compilation en ligne 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;
}
}
}