@634

Arrays

Advertisement

説明。

Arraysは、配列に対する様々な操作を提供するクラス。たとえば、ソートや検索などが用意されているので、これらの処理を行うクラスを自分で作ることなく、簡単に使うことが出来る。

sunのAPIドキュメントはここ(リンク先:java.sun.com)

使う。

インポート。
import java.util.Arrays;

//もしくは
//import java.util.*;
全てのメソッドがstaticだから、メソッド使用のためにArraysのオブジェクトを作る必要がない。
たとえばsort()メソッドを使うときはArrays.sort(引数)のように、クラス名.メソッドでアクセスできる。→別のお話

次から実例。

昇順ソート

配列の要素をソートする場合はsort()メソッドを使用する。引数に配列のみを渡した場合(引数がひとつの場合)、昇順ソートとなる。

例。intの配列を昇順ソート
import java.util.Arrays;

public class Sort{
    public static void main(String args[]){
        //適当な値で配列作成。
        int[] intarray = {20,10,50,40,60,30};

        System.out.println("sort()実行前の配列の内容。");
        for(int i = 0; i < intarray.length; i++){
            System.out.print(intarray[i] + " ");
        }
        System.out.println("");

        //ソート。
        Arrays.sort(intarray);

        System.out.println("sort()実行後の配列の内容。");
        for(int i = 0; i < intarray.length; i++){
            System.out.print(intarray[i] + " ");
        }
    }
}
結果
sort()実行前の配列の内容。
20 10 50 40 60 30
sort()実行後の配列の内容。
10 20 30 40 50 60

上の例以外にもchar、longなど、boolean型以外の基本データ型の配列なら全て同じ使い方でソートできる。Object型の引数を取るメソッドもあるから、全ての参照型クラスの配列もソートできる。この場合、ソートされる順番は要素の「自然順序付け」に従う。→ここ(リンク先:java.sun.com)参照。

降順ソート

基本データ型の降順ソートはArraysクラスに用意されていないので、自分で作るのが手っ取り早いんだけど、用意されているメソッドで実現したい場合の手順だけ紹介。
  1. まず昇順ソートした配列をラッパクラス型配列に変換
  2. ArraysクラスのasList()(リンク先:java.sun.com)メソッドを使ってラッパリスト作成。
  3. 作成したラッパリストにCollectionsクラス(リンク先:java.sun.com)のreverse()メソッドを適用。
  4. ラッパクラス型配列を基本データ型配列に戻す
これで、できるゾ。

二分探索

binarySearch()メソッドを使う。二分探索はね、一回検索するごとに検索対象が半分になっていくから他の検索法にくらべて格段に早いのよ。
※binarySearch()メソッドは昇順ソートされている配列以外には適用できない。

import java.util.Arrays;

public class BinSearch{
    public static void main(String args[]){
        int[] intarray = {20,10,50,40,60,30};

        //検索前に昇順ソート
        Arrays.sort(intarray);

        //配列intarrayから、値40を二分探索
        int n = Arrays.binarySearch(intarray, 40);

        //見つかった要素番号を表示
        System.out.println(n);
    }
}
見つかった場合、指定した配列の要素番号が返ってくる。もし、見つからなかった(値がなかった)場合は-1が返ってくる。

※昇順ソートしていない配列にbinarySearch()を適用した場合、誤った要素番号が返ってくる。コンパイルエラーにはならないので注意。

Advertisement

ショートカット

634
このカテゴリのトップページに戻る
634labs
   UIコレクションギャラリー

サイト検索

Google

Web サイト内

Y!ログール

ビリヤード