はじめに
皆さん。こんにちは!
DreamHanksの254cmです。
今回はCollection Frameworkについて説明していきます。
Java記事のまとめはこちらです。
前回の記事は【Java開発】第23回 Genericsです。
Collection Frameworkとは?
データ型が同じであるいくつかのデータを管理するために配列を使用しましたが、
配列は非効率的な問題があります。例えば、長さが固定されていることと値を削除できないことなどがあります。
そういう問題を解決するためにJavaはJava5バージョンからCollectionフレームワークを提供しました。
Collectionフレームワークはオブジェクトやデータを効率的に管理できるデータストラクチャーです。
Collectionフレームワークは大きく3種類のインターフェースで成り立っています。
Collectionフレームワークの構成要素
CollectionフレームワークはCollectionインターフェースを継承するListとSet
構造が異なって別のインターフェースで存在するMapで成り立っています。
List
リストは配列のようにデータを一列に並べた構造のデータストラクチャーです。
配列のように格納されたデータにインデクスを付与してインデクスを利用して管理します。
Listはデータを削除することができるし、長さは格納されるデータの数だけ伸びます。
そして、リストはオブジェクトのアドレスしか格納できないし、同一なアドレスもnull値も格納できます。
Listはどういうデータ型のデータを格納するかについてジェネリクスを使用して指定します。
もちろん、ジェネリクスを使用しなくても使用できますが、
ジェネリクスでデータ型を指定しないとどんなデータ型のデータも格納できますが、
格納されたデータを使用する時、エラーが起きやすいです。
なので、ジェネリクスを使用しなくてListを使うことは推奨できません。
Listの主なメソッド
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
public class ListSample { public static void main(String[] args) { List<String> arrList = new ArrayList<String>(); arrList.add("a"); arrList.add("b"); arrList.add("c"); arrList.add("d"); System.out.println(arrList); arrList.add(2, "e"); System.out.println(arrList); arrList.remove("b"); System.out.println(arrList); arrList.remove(3); System.out.println(arrList); for(String a : arrList) { System.out.print(a + " "); } System.out.println(); if(arrList.contains("a")) { System.out.println("aは存在します。"); } if(arrList.contains("f")) { System.out.println("fは存在します。"); } else { System.out.println("fは存在しません。"); } arrList.clear(); if(arrList.isEmpty()) { System.out.println("arrListは空いています。"); } } } |
出力結果
1 2 3 4 5 6 7 8 |
[a, b, c, d] [a, b, e, c, d] [a, e, c, d] [a, e, c] a e c aは存在します。 fは存在しません。 arrListは空いています。 |
Set
SetはListと異なってインデクスを付与しないので格納された順序で値を呼び出すことができません。
インデクスが存在しないので、get(int index)メソッドを提供しません。
代わりに、Iteratorというものを通じて繰り返しまたはデータの取り出しなどを行えます。
そして、Setは要素の重複格納を許可しません。
Setの主なメソッド
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
public class SetSample { public static void main(String[] args) { Set<String> stringSet = new HashSet<String>(); stringSet.add("a"); stringSet.add("b"); stringSet.add("c"); stringSet.add("d"); System.out.println(stringSet); stringSet.remove("b"); System.out.println(stringSet); stringSet.add("a"); System.out.println(stringSet); if(!stringSet.contains("b")) { System.out.println("bは存在しません。"); } Iterator<String> setIterator = stringSet.iterator(); while(setIterator.hasNext()) { System.out.print(setIterator.next() + " "); } } } |
出力結果
1 2 3 4 5 |
[a, b, c, d] [a, c, d] [a, c, d] bは存在しません。 a c d |
Map
Mapは配列のインデクスと似ていたKeyというものを使用して格納されているデータを取り出します。
各データはKey値と一緒に格納され、該当Key値を入力して必要なデータを取り出します。
Keyとデータのデータ型はジェネリクスで指定することができます。
Mapの主なメソッド
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
public class MapSample { public static void main(String[] args) { Map<String, Integer> integerMap = new HashMap<String, Integer>(); integerMap.put("一", 1); integerMap.put("二", 2); integerMap.put("三", 3); integerMap.put("四", 4); System.out.println(integerMap); integerMap.put("一", 11); System.out.println(integerMap); Set<Entry<String, Integer>> entrys = integerMap.entrySet(); System.out.println(entrys); Set<String> keys = integerMap.keySet(); System.out.println(keys); System.out.println(integerMap.get("一")); } } |
出力結果
1 2 3 4 5 |
{一=1, 三=3, 四=4, 二=2} {一=11, 三=3, 四=4, 二=2} [一=11, 三=3, 四=4, 二=2] [一, 三, 四, 二] 11 |
終わりに
今回の記事は以上になります。
次回はenumを学びましょう。
ご覧いただきありがとうございます。
コメント