Java
map
list
set

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

More than 3 years have passed since last update.

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

配列は複数のデータをひとつにまとめておく方法。

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入門 実践編 第二版

著者 中山清喬


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