MENU

【Java】コレクションについてまとめてみた。(List)

こんにちは。くまごろーです。
最近また『スッキリわかるJava 実践編』をやり始めて、コレクションについて勉強しました。
今までListとかMapとかは、調べながら実際に使ったことはあったのですが、正直具体的にどういうものなのかはよくわかってませんでした。
というわけで、これからまとめておこうと思います。

 
 
1 コレクションとは
 
Javaには、「データをまとめて格納するための入れ物クラス」がAPIとして準備されている。それらはjava.utilパッケージに属していて、コレクションフレームワークと総称されている。コレクションクラスには以下のようなものがある。

  • リスト(List)

順序どおりに並べて格納する(中身の重複は可能)

  • セット(Set)

順序があるとは限らない(中身の重複は不可)

  • マップ(Map)

ペアで対応付けて格納する


2 Listの使い方(ArrayList

(1)ArrayListの宣言

ArrayList<型>変数名 = new ArrayList<型>();

 
 
(2)メソッド(要素の追加・取得・削除・調査)

メソッド 意味 戻り値
add(値) リストの最後に要素を追加 boolean
add(x,値) リストのx番目に要素を挿入 void
set(x,値) リストのx番目にの要素上書き
get(x) x番目の要素を取り出す
size() 格納されている要素数を返す int
isEmpty() 要素がゼロであるか判定 boolean
contains(値) 指定要素が含まれているか判定 boolean
indexOf(値) 指定要素が何番目にあるか検索 int
iterator() 要素を順に処理するイテレータを返す iterator<~>
clear() 要素をすべて削除する void
remove(値) int番号の要素を削除する


 
(3)for文を用いたリスト要素の取り出し
 

for(int i = 0; i < リスト変数.size(); i++){
  //リスト変数.get(i)で要素を読み書き
}

 
※ 拡張forの場合

for(リスト要素の型 e : リスト変数){
  //eで要素を読み書き
}

 
(4)LinkedListとは
Listには、LinkedListというクラスもあり、以下の様な仕様になっている。

次にLinkedListクラスを見ていきます。ArrayListと似ていますが、中に含まれる要素がどのように並んでいるかを別に管理しているため、要素を追加したり削除したりする場合にArrayListと比較して高速に動作します。逆に要素を検索しようとする場合は先頭から順にリンクをたどって検索するためArrayListと比較して遅くなります。

LinkedListクラス - コレクション(LinkedList) - Java入門

 
(5)ArrayListとLinkedListの違い

ArrayList LinkedList
内部構造 配列 連結リスト
要素の挿入・削除 遅い 高速
指定位置の要素の取得 高速 遅い