・配列とは
配列とは、値をまとめて管理するオブジェクトのこと。 配列の種類はデータ型[]
、ArrayList
、LinkedList
、HashMap
の4種類ある。
・データ型[]
・多次元配列の作り方
多次元配列とは、配列の中に配列を作ることである。 データ型[][] 配列名 = new データ型[要素数][]
で作成することができる。
配列名[0] = new データ型[要素数]
で2次元目の配列の個数を入れられる。
・メソッド
・fillメソッド
Arrays.fill(配列名, 入れたい要素)
これを使うとすべての要素を“入れたい要素”にできる。すでにある要素も上書きされる。
・配列のコピー
・Arrays.copyOfを使った場合
copyOf
int[] beCopied = {10, 20, 30};
//Arrays.copyOf(コピーしたい配列, 長さ[2なら0, 1がコピーされる])
int[] doingCopy = Arrays.copyOf(beCopied, 2);
System.out.println(Arrays.toString(doingCopy));
//-> [10, 20]
・System.arraycopyを使った場合
arraycopy
int[] beCopied = {10, 20, 30};
int[] doingCopy = new int[3] //配列の長さ
//System.arraycopy(コピーしたい配列, コピーの開始位置, コピー先の配列, コピーする長さ)
System.arraycopy(beCopied, 0, doingCopy, 0, 3);
・ディープ(deep)コピーとシャロー(shallow)コピー
・ディープコピーとは
ディープコピーとは、完全なコピーを作るコピーのこと。コピーした後、コピー元が配列に変更を加えても、コピー先に影響は受けない。 <b>シャローコピー</b>とは、見せかけのコピーを作るコピーのこと。コピーした後、コピー元が配列に変更を加えると、コピー先の配列も変更される。
・copyOfRange
copyOfRangeメソッドとは、指定した範囲の要素を抜き出して、その要素を集めた配列を作成するメソッドである。copyOfRange
int[] copied = {10, 20, 30, 40, 50};
//Arrays.copyOfRange(コピー元の配列, 開始位置, 終了位置)
int[] doCopy = Arrays.copyOfRange(copied, 1, 3);
System.out.println(Arrays.toString(doCopy));
//=> {20, 30}
・配列の連結
・System.arraycopyメソッド
arraycopy
int[] copiedOne = {10, 20, 30, 40, 50, 60};
int[] copiedTwo = {70, 80, 90, 100};
int[] doCopy = new int[copiedOne.length + copiedTwo.length];
//System.arraycopy(コピー元, コピー開始位置, コピー先, コピー終了位置)
System.arraycopy(copiedOne, 0, doCopy, copiedOne.length)
//System.arraycopy(コピー元, コピー開始位置, コピー先, コピー先のコピー開始位置, コピー終了位置)
System.arraycopy(copiedTwo, 0, doCopy, copiedOne.length, copiedTwo.length);
System.out.prinln(Arrays.toString(doCopy));
// => {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}
・並び替え
・sort
sortでは数字を小さいものから大きいものに並び替える。sort
int[] list = {10, 1, 3, 12, 30};
Arrays.sort(list);
System.out.println(Arrays.toString(list));
=> {1, 3, 10, 12, 30}
・deepToStringとは
deepToStringとは、多次元配列を文字列で返すメソッド。toStringを使うと数字を参照することができない。deepToString
int[][] list = {{20, 30}, {40, 50}};
System.out.pritnln(Arrays.deepToString(list));
//=> [[20, 30], [40, 50]]