この記事は 2026 年 10 月 8 日に投稿しました。

目次
- はじめに
- DartのLinkedHashMapにキーが存在するか確認する
- containsKeyメソッドの基本的な使い方
- 値がnullの場合にキーの有無を確認する
- キーを判定するときの注意点
- おわりに
1. はじめに
こんにちは、iOS のエディタアプリPWEditorとその後継PWEditorNextの開発者の二俣です。
2018年5月から毎日技術ブログを更新しています。
今回はDartのLinkedHashMapのcontainsKeyメソッドについてです。
containsKeyメソッドを使うと、指定したキーがLinkedHashMapに含まれているかどうかを確認できます。戻り値はbool型で、キーが存在すればtrue、存在しなければfalseです。
2. DartのLinkedHashMapにキーが存在するか確認する
DartのLinkedHashMapは、キーと値の組をキーの挿入順に反復できるMapの実装です。containsKeyメソッドはMapから継承されており、指定したキーがMapに登録されているかを調べます。
メソッドの型は以下のとおりです。
bool containsKey(Object? key)
引数には存在を調べるキーを指定します。戻り値は、キーが登録されている場合はtrue、登録されていない場合はfalseです。引数の型はObject?なので、Mapのキーの型と異なる値を渡しても呼び出せます。その場合、通常は一致するキーがないためfalseになります。
3. containsKeyメソッドの基本的な使い方
containsKeyを使って、LinkedHashMapに特定のキーがあるか確認できます。
import 'dart:collection'; void main() { final LinkedHashMap<String, int> scores = LinkedHashMap<String, int>() ..['太郎'] = 80 ..['花子'] = 95; print(scores.containsKey('太郎')); // true print(scores.containsKey('次郎')); // false }
太郎はキーとして登録されているためtrue、次郎は登録されていないためfalseになります。値を取得する前にキーの存在を確認したい場合などに利用できます。
final String name = '花子'; if (scores.containsKey(name)) { print(scores[name]); // 95 }
4. 値がnullの場合にキーの有無を確認する
Mapの値の型がnullableである場合、キーが存在していて値がnullのことがあります。値を取得した結果だけでは、キーが存在しないのか、値がnullなのかを区別できません。containsKeyを使えば、キーの有無を確認できます。
import 'dart:collection'; void main() { final LinkedHashMap<String, int?> values = LinkedHashMap<String, int?>() ..['設定済み'] = 10 ..['未設定'] = null; print(values['未設定']); // null print(values.containsKey('未設定')); // true print(values.containsKey('存在しない')); // false }
この例では、未設定の値はnullですが、キー自体は登録されています。値がnullableのMapでは、キーの存在を判定する目的でcontainsKeyを使うと明確です。
5. containsKeyメソッドを使うときの注意点
キーとしての同一性で判定される
containsKeyは、Mapがキーを比較する方法に従って判定します。通常のLinkedHashMapでは、キーの==とhashCodeに基づいてキーを識別します。独自クラスをキーにする場合は、==とhashCodeを適切に実装してください。
キーの存在と値の状態は別
キーが登録されていても、対応する値がnullの場合があります。値がnullableのMapでキーの有無を知りたいときは、値との比較ではなくcontainsKeyを使用します。
判定後にMapが変更される可能性
containsKeyで確認した直後に別の処理がMapを変更すると、そのキーの状態が変わることがあります。複数の処理が同じMapを変更する設計では、確認と利用の間に変更が起きないようにしてください。
リファレンス
6. おわりに
DartのLinkedHashMapでcontainsKeyメソッドを使うと、指定したキーがMapに登録されているかをbool型で確認できます。
値がnullになる可能性があるMapでは、値を取得するだけではキーの有無を判断できません。containsKeyを使えば、キーが存在するかどうかを明確に判定できます。
キーの存在を確認してから処理を行いたい場合に活用してください。
私が技術者として所属している ニューラルでは、組み込み・制御系ソフトウェアを中心に、モバイルアプリや業務アプリなど、さまざまなソフトウェアの開発を行っています。
また、iOS(Swift/SwiftUI)やWindows(C#)をはじめとしたアプリケーション開発、Webシステムの開発などにも対応しています。
ソフトウェア開発に関するご相談や、一緒に開発に取り組んでいただける技術者の募集については、お気軽にお問い合わせください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688