トップJava > 配列の操作

配列の操作

リストを配列に変換する

  List<Long> list;  // 要素に値がセットされているものとする
  Long[] array = list.toArray(new Long[0]);

配列をリストに変換する

  static <T> List<T> asList(T... a)

指定された配列に連動する固定サイズのリストを返す。

Arrays.fill[1]

  int[] table = new int[100]; 
  Arrays.fill(table, -1);	// tableの全要素の値を -1 にする。

Arrays.copyOf[4]

  int[] src;   // 要素に値がセットされているものとする
  int[] dst = Arrays.copyOf(src, src.length);

配列を丸ごとコピー(clone)[2]

 int[] src = {1, 2, 3, 4, 5};
 int[] dst = src.clone();

System.arraycopy[2]

 System.arraycopy(コピー元配列, コピー元配列のコピー開始位置, コピー先配列, コピー先配列の開始位置, コピーの個数)

配列を反転する[3,5]

  Long[] array;   // 要素に値がセットされているものとする
  List<Long> list = Arrays.asList(array);// リストに変換
  Collections.reverse(list);                // 反転
  array = list.toArray(new Long[0]);        // 配列に戻す

Java では、int や long などプリミティブ型に対する List はない。 int型配列の場合、Integer型の List に変換して、Integerリストを並び替えて、 それを int 配列に戻す必要があるため、分かりにくいものになる。

int[] array = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.stream(array).boxed().collect(Collectors.toList());
Collections.reverse(list);
int[] reversedArray = list.stream().mapToInt(i -> i).toArray();

配列の要素を直接入れ替えるのが分かりやすい[8]。

    static void reverse(long[] v) {
        for (int i = 0; i < v.length/2; i++) { 
            long temp = v[i]; 
            v[i] = v[v.length - i - 1]; 
            v[v.length - i - 1] = temp; 
        }
    }

配列の並び替え[6],[7]

  Arrays.sort(array);                                // 昇順
  Arrays.sort(array,  Collections.reverseOrder());   // 降順

範囲を指定する場合には次のようにする。

  Arrays.sort(配列 ,開始インデックス, 終了インデックス);

リファレンス

[1] 配列のすべての要素を指定した値で埋める(fill)
[2] 【Java入門】配列のコピー(clone、arraycopy、ShallowとDeep)
[3] Java - 配列順序を反転する
[4] 配列をコピーする(シャローコピーとディープコピー)
[5] How do I reverse an int array in Java?
[6] 【Java入門】配列やListをソートする方法(文字列もソート)
[7] 【Java】sortで配列(Array)の要素の並び替え(ソート)を行う!
[8] Reverse An Array In Java ? 3 Methods With Examples