Подтвердить что ты не робот

Элементы сворачивания arraylist

Как поменять первый и последний элементы 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
4b9b3361

Ответ 1

Вы можете использовать Collections.swap(List<?> list, int i, int j);

Ответ 2

В Java вы не можете установить значение в ArrayList, назначив ему, есть способ set() для вызова:

String a = words.get(0);
words.set(0, words.get(words.size() - 1));
words.set(words.size() - 1, a)

Ответ 3

Используйте это. Вот онлайн-компиляция кода. Взгляните http://ideone.com/MJJwtc

public static void swap(List list,
                        int i,
                        int j)

Сворачивает элементы в указанных позициях в указанном списке. (Если указанные позиции равны, вызов этого метода оставляет список без изменений.)

Параметры:   list - Список для замены элементов.   i - индекс одного элемента, который должен быть заменен.   j - индекс другого элемента, подлежащего обмену.

Прочитать официальные документы коллекции

http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#swap%28java.util.List,%20int,%20int%29

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

Ответ 4

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;
            }
        }
    }