LoginSignup
54
54

More than 5 years have passed since last update.

Javaのコレクションクラスについて

Last updated at Posted at 2016-01-21

配列とコレクションの違いについてまとめようと思います。

配列は複数のデータをひとつにまとめておく方法。
array01.png
※事前に配列のサイズを決める必要がある
また連続したデータとなります。

画像 参照:http://www.mlab.im.dendai.ac.jp/programming/basic/02/#%281%29

 collection.jpg
(図はinkscapeを使用して自作)

配列とコレクションの違い

配列を使ったコード

Hairetu.java
 //配列を確保
 String[] names = new String[3];

  //3人追加
  names[0]="田中";
  names[1]="鈴木";
  names[2]="斎藤";

  System.out.println(names[1]);

ArrayLIst(コレクション)を使ったコード

ArrayList.java
  import java.util.ArrayList;

  //ArrayListを確保
  ArrayList<String>names = new ArrayList<String>();
  //3人を追加
  names.add("田中");
  names.add("鈴木");
  names.add("斎藤");

  System.out.println(names.get(1));

配列とArrayListの使い方は似ていますが、以下の三つが特に異なります。

1、import文を記述する

ArrayListをはじめとするコレクションリストはjava.utilクラスに属するため、通常はimport文を用いることが一般的です。

2、不等号のカッコを使用し格納するものの方を使用する

配列ではString[]でしたがArrayListではArrayList<String>のように記述します。
またArrayList<String>の部分はArrayList<HogeHoge>のように好きなオブジェクトを格納することができます。

3、確保(宣言時)の時にサイズを指定せず、要素は随時追加が可能!

配列は宣言する時にサイズが幾つ必要か記述し、後からサイズを増やすことはできません。
一方ArrayListをはじめとするコレクションリストクラスは、宣言の際に要素のサイズを指定しません。なぜならば、データを追加しようとした時に、随時自動的に追加されていくからです。

デメリットもあります。それはメモリ効率が配列の方がいいことや点数などのintの値をそのまま入れないことです。
ArrayList<int>と書くことはできず、ArrayList<Integer>のようにインスタンスに変換してあげなければなりません。つまりインスタンスは全て格納可能です。

ArrayListの使いかた

ArrayListはこれで宣言することができる。
ArrayList<String> sakana = new ArrayList<String>();

以下ArrayListを用いたSampleコードを示す

ArrayTest.java
import java.util.ArrayList;

class ArrayTest{
  public static void main(String args[]){
    //ArrayListを確保
    ArrayList<String> sakana = new ArrayList<String>();
    sakana.add("金魚");
    sakana.add("出目金");
    sakana.add("アンコウ");
    sakana.add("サバ");
    //格納した情報を全て表示
    for(int i=0;i < sakana.size();i++){
      System.out.println(sakana.get(i));
    }
    //指定した場所の値を上書きする
    //1は実際には2番目の値ということになる
    //この場合は出目金→うなぎ
    sakana.set(1,"うなぎ");
    //空行をはさむ
    System.out.println();
    //格納した情報を全て表示
    for(int i=0;i < sakana.size();i++){
      System.out.println(sakana.get(i));
    }
  }
}
実行結果
金魚
出目金
アンコウ
サバ

金魚
うなぎ
アンコウ
サバ

今まで配列を使ってきた自分からは新鮮なものに感じました。おわり。

引用
スッキリわかるJava入門 実践編 第二版
著者 中山清喬

とてもわかりやすく入門編も実践編も共にオススメの書籍です。

54
54
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
54
54