JavaSilverでメモしたところ備忘録として残しておこうと思います。
Collectionインターフェースとは
- コレクション・インターフェースはSetやListのようなサブインターフェースの実装を供給している
Mapもコレクションに似ているがコレクションではない
コレクションフレームワークには入っている
- コレクションフレームワークとは多数のデータをまとめて管理および処理するために用意されたもので、様々なタイプのインタフェースとクラスで構成されjava.util.Collectionとjava.util.Mapの2つのグループに分けることができます
Collection・インターフェースのメソッド
メソッド名 | 概要 |
---|---|
add(E e) | 要素を追加する |
remove(Object o) | 指定された要素を削除する |
contains(Object o) | 指定された要素がcollectionに含まれているかどうか返す |
isEmpty() | コレクションがからかどうか返す空ならtrue
|
size() | コレクションの要素数を返す |
iterater() | コレクションを反復処理するためのイテレーターを返す |
- Collectionインターフェースは、java.utilパッケージのjava.util.Iterableインターフェースを継承しこちらはJavaで拡張for分(for-each)分を使用できるようにするためのインターフェースです
サブインターフェース
List(シーケンス)
- 順序付けられたコレクション。重複した要素を含むことができる、ユーザーは要素を挿入する場所やインデックスによって要素にアクセスすることを正確に制御できる
- Listはインターフェースなのでインスタンは生成できない
- Listのメリットはコレクション(データ型)に変更したい場合、宣言時に手を加えなくていい
- ListのデメリットはArrayListにしかメソッドがないときにキャストしなければならない
- Listは以下のクラスで実装されています
ArrayList
LinkedList
- Vector
- Stack
ArrayList
-
配列を便利に使いやすくしたクラス
-
Array(配列)では作成時に決めた配列の大きさを変えることはできず、追加でサイズを変更したい場合には新しく配列を作り直す必要がありましたが、ArrayListでは使う側が配列のサイズを意識せずに扱うことができる(動的配列)
-
スレッドセーフ
ではない
スレッドセーフとは
マルチスレッドの環境で実行されても内部データへのアクセスが競合せずに、常に内部データの整合性が保たれているように対策されている状態のことです。
ArrayListにしかないメソッド
- Listをコピーする
cloneメソッド
-
Iterater型のオブジェクト
とIteratarメソッド
を使い使用することができる
- Iterater 型のオブジェクトから
hasNext
やnext
メソッドを呼び出せる
メソッド名 | 概要 |
---|---|
hasNext | リストが次の要素を追っているときはtrueを返す |
next | 次の要素を返す |
- 配列からListに変換するときはArrays.asList()メソッドを使用する
//配列からlistに変換
String[] array1 = { "赤", "青", "緑", "紫" };
List<String> list1 = Arrays.asList(array1);
- リストから配列への変換する場合は、toArrayメソッドを使用
//Listから配列に変換
List<String> list2 = new ArrayList<>(Arrays.asList("赤", "黄", "青"));
String[] array2 = list2.toArray(new String[list.size()]);
LinkedList
- 要素がどのように並んでいるか別で管理しているために要素を削除したり追加する場合にArrayListよりも高速に動作するが、要素を順にたどるため検索などはArrayListよりも遅くなる
Listのよく使用するメソッド
メソッド名 | 概要 |
---|---|
add() | リストに値を追加 |
addAll() | リストにリストを追加 |
set() | リストの値を変更 |
get() | リストの値を取得 |
size() | リストの要素数を取得 |
subList() | リストの一部分から切り取る |
contain() | リストに値が含まれるか判定 |
indexOf() | リストから指定した文字列のインデックスを取得 |
sort() | リストを順番に並べる |
remove() | インデックスを指定して削除 |
distinct() | 重複した要素がある場合は削除 |
clear() | リストからすべての要素を削除 |
メソッドを使わずlistを出力すると[,]
も出力される
//java
List<String> sample_list = new ArrayList<>(Arrays.asList("赤", "青", "緑", "黒", "白"));
System.out.println(sample_list);
//[ 赤,青,緑,黒,]
Set
-
重複した要素を含むことができないコレクション
-
順序があるとは限らない
-
Setを継承したクラス
HashSet
TreeSet
- LinkedList
HashSet
- ハッシュテーブルを利用した重複なしの配列になります
- 順序付けはない
TreeSet
- キーを利用して常にソートした状態のまま保持しています
Queue
- 追加の挿入、抽出、及び検査が追加されたコレクション