どうも、ちょげ(@chogetarou)です。
配列(Array)の最後からN個の要素を取得する方法を紹介します。
方法

配列(Array)の最後からN個の要素を取得する方法は、2つあります。
copyOfRange()
1つは、copyOfRange()を使う方法です。
まず、ArraysからcopyOfRange()を呼び出します。
Arrays.copyOfRange()の第1引数に配列を指定します。
そして、Arrays.copyOfRange()の第2引数に配列のサイズを取得する要素数で引いた値、第3引数に配列のサイズを指定します。
配列のサイズは、配列のlengthプロパティで取得します。
//N=取得する要素数
T[] lastN = Arrays.copyOfRange(array, array.length - N, array.length);
上記のArrays.copyOfRange()は、第1引数に指定した配列の末尾からN個の要素を取得します。
使用例
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
int[] numbers = new int[]{ 1, 2, 3, 4, 5, 6 };
int size = numbers.length;
int n = 3;
int[] lastN = Arrays.copyOfRange(numbers, size - n, size);
for (int i : lastN) {
System.out.print(i + ",");
}
}
}
出力:
4,5,6,
stream()
もう1つは、stream()を使う方法です。
まず、Arraysからstream()を呼び出します。
Arrays.stream()の引数に配列を指定します。
次に、stream()からskip()を呼び出します。
skip()の引数に、配列のlengthプロパティを取得する要素数で引いた値を指定します。
そして、skip()からtoArray()を呼び出します。
//N=取得する要素数
T[] lastN = Arrays.stream(array).skip(array.length - N).toArray();
上記のtoArray()は、stream()の引数に指定した配列の末尾からN個の要素を取得します。
使用例
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
int[] numbers = new int[]{ 1, 2, 3, 4, 5, 6 };
int size = numbers.length;
int n = 3;
int[] lastN = Arrays.stream(numbers).skip(size - n).toArray();
for (int i : lastN) {
System.out.print(i + ",");
}
}
}
出力:
3,4,5,6,
まとめ
配列(Array)の末尾からN個の要素を取得する方法は、次の2つです。
- copyOfRange()を使う方法
T[] lastN = Arrays.copyOfRange(array, array.length - N, array.length);
- stream()を使う方法
T[] lastN = Arrays.stream(array).skip(array.length – N).toArray();
コメント