こんにちは!ISAMU(@burlesca_isa)です!
今回の対象読者は
- コレクションフレームワークについて知りたい方
コレクションフレームワークとは?
List Set Mapのデータ構造を提供するライブラリのことです。
データ構造とはデータをまとめて扱えるものですが、
代表的なものには配列があります。
配列は宣言した後、データの数を変更できないなど不便なことがあるため、
その時にコレクションフレームワークを使用します。
コレクションフレームワークを使用するために覚えること
- コレクションフレームワークは大きく分けて3種類
- 接頭辞で使い分ける
- equals()メソッドとhashCode()をオーバーライド
- 操作するためのメソッド
コレクションフレームワークは大きく分けて3種類
コレクションフレームワークは大きく分けてList Set Mapの3種類あります。
それぞれ下記の特徴があります。
- List・・・サイズを気にすることのない配列
- Set・・・要素の重複がない
- Map・・・キーと値がある
これらはインターフェースです。
インターフェースに定義されたメソッドを使用してデータの操作をすることができます。
接頭辞で使い分ける
大きな種類はList Set Mapですが、
さらに接頭辞によって細かく分類されます。
- Hash・・・検索機能
- Linked・・・入力順序の保存機能
- Tree・・・ソート機能
接頭辞がHashのものは順序は不定です。
順序通りに出力したい場合は接頭辞がLinkedを使用します。
Set
- HashSet・・・同じ要素を重複して格納できない(順序不定)
- LinkedHashSet・・・同じ要素を重複して格納できない(格納順に出力)
- TreeSet・・・重複不可、ソートした状態で出力
Map
- HashMap・・・キーと値をペアで格納し、キーで検索可能。(順序不定)
- LinkedHashMap・・・キーと値で格納し、キーで検索可能(格納順に出力)
- TreeMap・・・キーと値で格納し、キーで検索可能ソートした状態で出力
List
- ArrayList・・・サイズが自動的に拡張する配列。
- LinkedList・・・要素の挿入、削除の効率的。
ListはSetとMapと接頭辞が違います。
equals()メソッドとhashCode()のオーバーライド
コレクションフレームワークは
equals()メソッドとhashCode()メソッドをオーバーライドする必要があります。
これら2つのメソッドはObjectクラスに定義されています。
Objectクラスは暗黙的に継承されるクラスです。
なぜオーバーライドが必要かというと、
Setを使用する時など、同じオブジェクトかを判定するのに必要だからです。
これらはEcripseで自動生成することができます。
これらのやり方は、別の記事で解説します。
操作するためのメソッド
コレクションフレームワークのデータを操作するためにメソッドを使用します。
データの追加や削除などもメソッドを使用して行います。
List Set Mapのインターフェースに定義されているメソッドを使用します。
メソッドについてもコレクションフレームワークごとに記事を書きますので、
そこで解説します。