#ArrayListクラス(可変長配列)のオブジェクト操作
- リストは配下の要素が順序づけられたコレクション
- ArrayListは内部的に配列を利用したデータ構造になっていて後からでも要素追加削除可能
- cf: 配列は不可
- インデックス値による値の読み書き(ランダムアクセス)は、位置によらず一定時間でアクセス可能
-
値の頻繁な挿入削除は低速
- 挿入時に確保していたメモリの領域を超えると自動でメモリ再割り当てが発生する(→あらかじめ要素数が想定される場合サイズ宣言しよう)
###定義
-
ArrayList<型> リスト名 = new ArrayList<型>();
- <型> にクラス名を指定
- 指定したクラスのオブジェクトを要素として格納できるようになる
- 基本型を扱うリストを作成したい場合は、ラッパークラスで定義(ex: int型のラッパークラスはIntegerクラス)
###要素の並べ替え
- Collectionsクラスのsortメソッド
- リストの要素を自然昇順でソート
Collections.sort(ArrayListオブジェクト);
- 要素を降順にソート
Collections.sort(ArrayListオブジェクト, Collections.reverseOrder());
###要素を逆順に
- Collectionsクラスのreverseメソッド
Collections.reverse(リスト);
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>(Arrays.asList(50,80,46));
nums.add(1);
System.out.println(nums); //[50, 80, 46, 1]
//sort関数で昇順に並び替え
Collections.sort(nums);
//表示して確認
System.out.println(nums); //[1, 46, 50, 80]
//sort関数で降順に並び替え
Collections.sort(nums, Collections.reverseOrder());
//表示して確認
System.out.println(nums); //[80, 50, 46, 1]
//リストから2番目の値を取得して表示
System.out.println(nums.get(2)); //46
System.out.println("データ数:" + nums.size()); //データ数:4
for (int i = 0 ; i < nums.size() ; i++){
int num = nums.get(i);
System.out.print(num+" "); //80 50 46 1
}
}
}
##数列の反転
与えられた数列を逆順に出力するプログラムを作成して下さい。
*Input
入力は以下の形式で与えられます:
n
a1 a2 . . . an
nは数列の長さを示し、ai は i 番目の数を表します。
*Output
逆順の数列を1行に出力して下さい。数列の要素の間に1つの空白を入れて下さい(最後の数の後に空白は入らないことに注意して下さい)。
*Constraints
- n ≤ 100
- 0 ≤ ai < 1000
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n =scanner.nextInt();
ArrayList<Integer> nums = new ArrayList<Integer>();
for(int i=1;i<=n;i++){
int num = scanner.nextInt();
nums.add(num);
}
/*
昇順に並び替え
Collections.sort(nums)
降順に並び替え
Collections.sort(nums, Collections.reverseOrder());
サイズ確認
System.out.println(nums.size());
*/
Collections.reverse(nums);
for (int i = 0 ; i < n ; i++){
if (i==n-1){
System.out.print(nums.get(i));
}
else{
System.out.print(nums.get(i)+" ");
}
}
System.out.println();
}
}