主要メソッド
メソッド名 | 宣言されたインターフェイスおよびクラス名 | 引数の型 | 戻り値の型 | 要素が空の場合の動作 |
---|---|---|---|---|
add(E e) |
Collection<E> |
E |
boolean |
false を返す(失敗時)、例外を投げる可能性あり |
get(int index) |
List<E> |
int |
E |
例外 (IndexOutOfBoundsException ) |
set(int index, E element) |
List<E> |
int , E
|
E |
例外 (IndexOutOfBoundsException ) |
removeIf(Predicate<? super E> filter) |
Collection<E> |
Predicate<? super E> |
boolean |
空の場合、false を返す |
poll() |
Queue<E> |
なし | E |
null を返す |
peek() |
Queue<E> , Deque<E>
|
なし | E |
null を返す |
replace(K key, V value) |
Map<K,V> |
K , V
|
V |
要素が存在しない場合、null を返す |
put(K key, V value) |
Map<K,V> |
K , V
|
V |
null を返す (要素が存在しなかった場合) |
get(Object key) |
Map<K,V> |
Object |
V |
要素が存在しない場合、null を返す |
replace(K key, V oldValue, V newValue) |
Map<K,V> |
K , V , V
|
boolean |
要素が存在しない場合、false を返す |
compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) |
Map<K,V> |
K , BiFunction<? super K,? super V,? extends V>
|
V |
要素が存在しない場合、null を返す可能性あり |
remove(Object o) |
Collection<E> |
Object |
boolean |
false を返す(要素が存在しない場合) |
remove(int index) |
List<E> |
int |
E |
例外 (IndexOutOfBoundsException ) |
remove(Object key) |
Map<K,V> |
Object |
V |
要素が存在しない場合、null を返す |
remove() |
Queue<E> |
なし | E |
例外(NoSuchElementException ) |
remove
メソッドなど、インターフェイスによって返し値が全く違うので注意
Dequeのメソッド
メソッド名 | 宣言されたインターフェイスおよびクラス名 | 引数の型 | 戻り値の型 | 要素が空の場合の動作 |
---|---|---|---|---|
push(E e) |
Deque<E> |
E |
void |
例外を投げる可能性あり |
pop() |
Deque<E> |
なし | E |
例外 (NoSuchElementException ) |
peek() |
Queue<E> , Deque<E>
|
なし | E |
null を返す |
removeFirst() |
Deque<E> |
なし | E |
例外 (NoSuchElementException ) |
removeLast() |
Deque<E> |
なし | E |
例外 (NoSuchElementException ) |
pollFirst() |
Deque<E> |
なし | E |
null を返す |
pollLast() |
Deque<E> |
なし | E |
null を返す |
offerFirst(E e) |
Deque<E> |
E |
boolean |
失敗した場合、false を返す |
offerLast(E e) |
Deque<E> |
E |
boolean |
失敗した場合、false を返す |
peekFirst() |
Deque<E> |
なし | E |
null を返す |
peekLast() |
Deque<E> |
なし | E |
null を返す |
nullの扱い
コレクションクラス/インターフェイス |
null のキーの許可 |
null の値の許可 |
null に関連する動作 |
---|---|---|---|
ArrayList |
許可 | 許可 |
null を格納・検索・削除可能。 |
LinkedList |
許可 | 許可 |
null を格納・検索・削除可能。 |
HashSet |
許可 | 許可 |
null を格納・検索・削除可能。 |
TreeSet |
許可しない | 許可しない |
null を追加しようとするとNullPointerException が発生。 |
HashMap |
許可 | 許可 |
null をキーや値として使用可能。ただし、null キーは1つだけ格納可能。 |
TreeMap |
許可しない | 許可 |
null キーを使用するとNullPointerException が発生。値としてのnull は許可される。 |
Hashtable |
許可しない | 許可しない |
null キーまたはnull 値を使用するとNullPointerException が発生。 |
ConcurrentHashMap |
許可しない | 許可しない |
null キーまたはnull 値を使用するとNullPointerException が発生。 |
PriorityQueue |
許可しない | 許可しない |
null を追加しようとするとNullPointerException が発生。 |
ArrayDeque |
許可しない | 許可しない |
null を追加しようとするとNullPointerException が発生。 |
EnumMap |
許可しない | 許可 | キーにnull を使用するとNullPointerException が発生。値としてのnull は許可される。 |
Vector |
許可 | 許可 |
null を格納・検索・削除可能。 |
Stack |
許可 | 許可 |
null を格納・検索・削除可能。 |
LinkedHashMap |
許可 | 許可 |
null キーとnull 値の使用が可能。 |
WeakHashMap |
許可 | 許可 |
null キーとnull 値の使用が可能。ただし、ガベージコレクションが発生した場合、null キーは削除される。 |
補足
-
null
のキーを許可するコレクション:-
HashMap
,LinkedHashMap
,WeakHashMap
は、null
キーを1つだけ許可します。この場合、null
キーは他のキーと同様に扱われ、適切に格納・検索・削除が行われます。
-
-
null
を許可しないコレクション:-
TreeSet
,TreeMap
,Hashtable
,ConcurrentHashMap
,PriorityQueue
,ArrayDeque
などは、null
キーやnull
値を許可しません。これらのコレクションにnull
を追加しようとすると、NullPointerException
が発生します。
-
-
TreeSet
とTreeMap
:- これらは順序を保つために内部で比較操作を行う必要があり、
null
値の比較は不可能であるためnull
を許可しません。キーとしても値としてもnull
はサポートされません。
- これらは順序を保つために内部で比較操作を行う必要があり、
-
スレッドセーフなコレクション:
-
Hashtable
やConcurrentHashMap
などのスレッドセーフなコレクションは、null
キーやnull
値を許可しません。これにより、null
による潜在的な競合状態を防ぐことができます。
-
不変コレクションの作成方法と例外処理
不変コレクションは、作成後に変更されないコレクションであり、変更操作が試みられた場合にはUnsupportedOperationException
が発生します。これにより、データの整合性を保証できるため、特定の場面で非常に有用です。特に、設計上変更が必要ないデータを扱う場合や、不変性が求められる環境(例:マルチスレッド環境)で役立ちます。
コレクションの種類 | 作成方法 | メソッド | 例外が発生する操作 | 例外の種類 |
---|---|---|---|---|
不変リスト (List ) |
List.of() Collections.unmodifiableList()
|
add(E e) remove(Object o) set(int index, E element)
|
要素の追加、削除、変更 | UnsupportedOperationException |
不変セット (Set ) |
Set.of() Collections.unmodifiableSet()
|
add(E e) remove(Object o)
|
要素の追加、削除 | UnsupportedOperationException |
不変マップ (Map ) |
Map.of() Collections.unmodifiableMap()
|
put(K key, V value) remove(Object key)
|
要素の追加、削除 | UnsupportedOperationException |