LoginSignup
0
0

More than 3 years have passed since last update.

【Java】ArrayListクラスのオブジェクト操作 (AOJ④数列の反転)

Posted at

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();
    }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0