Javaの備忘録その2【ArrayListクラス】

 

今回はJavaのArrayListクラスについて簡単にまとめていきます。

ArrayListクラスとは・・・

・サイズ変更が可能な配列のようなもの(リストみたいなもの)

・java.util.ArrayListクラス

・要素の追加、削除を自由に行える

・リストの型は参照型で値を格納する

・基本データ型で宣言するとエラーになる

 

宣言時の基本情報

 必要なインポート宣言  →  import java.util.ArrayList; 

 変数宣言例   → ArrayList<String> array;

 領域の確保例  → array = new ArrayList<String>(3);

 値の代入例   → array.add(“鈴木”);

 値の取り出し例 → String name = array.get(0);

 

※補足

<>の中に格納したいデータ型を指定する。

これをジェネリックという。

<>の中に宣言できるのは参照型のみ。

new ArrayList<String>(3);によって、初期サイズで空のリストが作成される。

何も指定しない場合は10が設定される。

値の代入には、add()メソッドを利用する。

インデックスを使用しないと、添字0から順番に格納される。

インデックスを指定した場合、インデックスの位置と、

それ以降に要素があれば、それらを移動し各要素にはインデックスに1を加える。

 

ArrayListの各メソッド

・変数名.add(格納したいデータ);

変数名.add(インデックス,格納したいデータ);

・値の取り出しには、get()を利用する。

・要素数を取得するには、seze()を使う。

コード例

import java.util.ArrayList;

 public class Sample1{

  public static void main(String[] args){

   ArrayList<String> array;

   array = new ArrayList<String>(3);

   array.add(“箕輪”);

   String name = array.get(0);

   System.out.println(name + “:” + array.size());

  }

}

 

結果

 箕輪:1

※ArryaList<String>array1 = new ArrayList<String>(3); のように、

変数宣言と領域の確保を同時にしてもOK

 

ラッパークラス

Javaでは、基本データ型の値を参照型の値にするためのクラスが提供されている。

それがラッパークラス。

これによってint型なども参照型として扱えるので、ArrayListで使用可能になる。

基本データ型に対応するラッパークラス

 boolean → Boolean

 byte → Byte

 char → Character

 short → Short

 int → Integer

 long → Long

 float → Float

 double → Double

 

<>の記述方法

左辺と右辺でデータ型を合わせる必要がある。

 ArrayList<Integer> array = new ArrayList<Integer>();

 array.add(10); //OK 

 arrya.add(“田中”);   //String型を格納しようとしてるのでコンパイルエラー

 

ジェネリックを使用しない場合

下のコードは型がチェックできないため、コンパイル時に警告が出る。

しかしコンパイル、実行ともに成功する。 

 ArrayList array = new ArrayList();

 array.add(10);

 array.add(20);

 System.out.println(array.get(0) + ” ” + array.get(1));

実行結果

注意:Sample1.javaの操作は、未チェックまたは安全ではありません。

注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。

‥$ java Sample1

10 20

 

※ジェネリックを使用しないと、数字の10を格納した後に、

String型の文字列を格納するなど、不正なデータが格納されてしまう。

ジェネリックを使用した場合は、異なる型を加えると、コンパイルエラーになって、

不正なデータの格納を防ぐことができる。

また、ジャネリックを使用しないと、

値を取り出すときにキャストして目的の型への変換が必要になる。

 int num = (Integer)array.get(0);

 

ダイヤモンド演算子

Java SE7以降では、<>の後ろには、型の宣言を省略可能になった。

 ArrayList<String> array  = new ArrayList<>();

 

最近勉強しているJavaについて簡単にまとめてみました。

間違っているところがあればコメントに書き込んで教えてください。

 

以上

ではまた(^^)

 

コメントを残す

メールアドレスが公開されることはありません。