88

の最初と最後の要素を交換するにはどうすればよい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
4

4 に答える 4

287

使用できますCollections.swap(List<?> list, int i, int j);

于 2013-04-12T05:14:56.923 に答える
16

Java では、ArrayList に代入して値を設定することはできませんset()。呼び出すメソッドがあります。

String a = words.get(0);
words.set(0, words.get(words.size() - 1));
words.set(words.size() - 1, a)
于 2013-04-12T05:18:14.940 に答える
13

このように使用します。コードのオンライン コンパイルは次のとおりです。http://ideone.com/MJJwtcをご覧ください

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

指定されたリスト内の指定された位置にある要素を交換します。(指定された位置が等しい場合、このメソッドを呼び出してもリストは変更されません。)

パラメータ: list - 要素を交換するリスト。i - スワップされる 1 つの要素のインデックス。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);    

    }
}

ワンラインのコンパイル例http://ideone.com/MJJwtc

于 2013-04-12T05:16:32.167 に答える
2
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;
            }
        }
    }
于 2014-07-26T06:57:55.100 に答える