未来エンジニア養成所Blog

プログラミングを皆に楽しんでもらうための情報をお届けします。

【Java】コレクション Part4

title

前回に引き続きコレクションの解説です。

前回までの記事はこちら phoeducation.work phoeducation.work phoeducation.work


Collectionsクラス

Collectionsクラスには、コレクションに対して、並べ替えや検索をするためのstaticなメソッドが用意されています。

Colletionインターフェースとは異なりますので、注意が必要です。

Collectionsクラスの主なメソッドとして、並べ替えを行うsort()や、コレクションの中から指定したオブジェクトを検索し、先頭から何番目に格納されているかというインデックス番号を返すbinarySearch()などがあります。


【Collectionsクラスの主なメソッド】
Collectionsクラスの主なメソッド


【Collectionsクラスメソッドの利用】

import java.util.ArrayList;
import java.util.Collections;
class CollectionSample07{
    public static void main(String [ ] args){
        ArrayList<Integer> list = new ArrayList<Integer>( );
        list.add(50);
        list.add(10);
        list.add(30);

        Collections.sort(list);
        for(Integer inte : list){
            System.out.println(inte);
        }

        int index = Collections.binarySearch(list, 50);
        System.out.println("50のインデックス番号は:" + index);
    }
}


実行結果

10
30
50
50のインデックス番号は:2


5行目でArrayList型のlistオブジェクトはジェネリックスを使用して、Ingeterオブジェクトのみが格納できると宣言しています。

6行目~8行目でint型の50、10、30はautoboxing機能によりInteger型に変換されて、listオブジェクトに格納されます。

10行目でCollectionsクラスのsort()を使用して並べ替えを行いますが、sort()はstaticなメソッドなので、クラス名.メソッド名と記述しなければなりません。

11行目~13行目では、sort()を使用して並べ替えられたlistオブジェクトを、拡張for文を使用して要素を1つずつ取り出し、画面に表示しています。

15行目では、binarySearch()を使用して、listオブジェクトから50という値を検索し、そのインデックス番号を取り出し、画面表示しています。

インデックス番号は0から始まるため、50のインデックス番号は2となります。


Collectionsクラスメソッドの利用


Arraysクラス

Arraysクラスは、コレクションオブジェクトを並べ替えたり、検索するためのstaticメソッドが用意されているものでしたが、Arraysクラスは、配列を並べ替えたり、検索するためのstaticメソッドが用意されています。Arraysクラスはクラスですので、直接利用することができます。

【Arraysクラスの主なメソッド】
Arraysクラスの主なメソッド


【Arraysクラスメソッドの利用1】

import java.util.Arrays;
class CollectionSample08{
    public static void main(String [ ] args){
        int [ ] arrays = {5,10,7};
        Arrays.sort(arrays);
        for(int temp:arrays){
            System.out.println(temp);
        }

        Object [ ] obj = {new  String("abc"), new  Integer("123")};
        Arrays.sort(obj);
    }
}


実行結果

5
7
10
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    at java.lang.Integer.compareTo(Integer.java:52)
    at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:320)
    at java.util.ComparableTimSort.sort(ComparableTimSort.java:188)
    at java.util.Arrays.sort(Arrays.java:1246)
    at CollectioSample08.main(CollectionSample08.java:11)


4行目でarraysというint型のデータが入る配列を用意しておきます。

5行目ではArraysクラスのsort()を使用して並べ替えを行いますが、sort()はstaticメソッドなので、Arrays.sort()と記述します。

これにより並べ替えが行われ、6行目~8行目で拡張for文を使用して、arrays配列の要素を1つずつ取り出して、画面表示しています。


10行目でString型とInteger型の異なる型のオブジェクトが入るObjectクラスの配列を用意します。

11行目でsort()を使用して並べ替えを行おうとしていますが、配列に異なる型のデータが混在している場合は、ClassCastException例外が発生するので、注意が必要です。


【Arraysクラスメソッドの利用2】

import java.util.Arrays;
import java.util.List;
class CollectionSample09{
    public static void main(String [ ] args){
        String [ ] str = {"Apple","Orange","Lemon"};
        List<String> list = Arrays.asList(str);
        for(int i = 0; i < list.size( ) ; i++){
            System.out.println(list.get(i));
        }
    }
}


実行結果

Apple
Orange
Lemon


ここではArraysクラスの主なメソッドから、asLIst()を見ていきましょう。

asList()は配列をリストオブジェクトに変換します。

5行目でstrというString型のデータが入る配列を用意しておきます。

6行目でasList()を使用してリストに変換を行いますが、asList()はstaticメソッドなので、Arrays.asList()と記述します。

これにより配列がリストオブジェクトに変換されます。

7行目~9行目でListオブジェクトのsize( )を使用して要素数を取り出し、その数分、get()を使用して要素を取り出しています。


「コレクション Part5」へ続きます。 phoeducation.work


参考図書



独学で挫折しそうになったら、オンラインプログラミングスクール
未来エンジニア養成所Logo



あわせて学習したい

phoeducation.work phoeducation.work