SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Android開発のためのJava SE再入門

コレクションとAndroid非同期処理の基本

Android開発のためのJava SE再入門(5)

  • X ポスト
  • このエントリーをはてなブックマークに追加

Collections Framework

 Collections Framework(コレクション・フレームワーク)とは、コレクションを統一的に操作および管理するための仕組みで、汎用的なインターフェースと、その実装クラスなどから構成されています。

 Collections Frameworkで提供されるインターフェースのうち、Collection、List、Set、Queue、Mapの5つが基本となるインターフェースです。次の図は、Collections Frameworkに含まれる主要なインターフェースの階層構造を示しています。

主要なインターフェースの階層構造
主要なインターフェースの階層構造

Collectionインターフェース

 Collectionは、コレクション操作の基本メソッドが定義されたインターフェースです。Map以外のList、Set、Queueインターフェースは、このCollectionのサブインターフェースとなっています。

 次の表は、コレクションの要素に対する処理と、基本のコレクションインターフェースのメソッドとの対応をまとめたものです。

インターフェースの各メソッド
要素の主な処理 Collection List Set Queue Map
追加 add add offer put
インデックスを指定して設定   set      
検索 contains containsKey
containsValue
  indexOf      
取得   get   peek get values
キーの取得         KeySet
要素が空か判定 isEmpty isEmpty
イテレーター取得 iterator  
削除 remove remove
      poll  
要素数 size size
配列にコピー toArray  

List、Set、Map、Queueインターフェース

 これらのインターフェースは、それぞれオブジェクトの管理方法が異なったコレクションとなっています。

1. List(リスト)

 リストは、配列のように格納される要素に順番のあるコレクションです。順番があるため、インデックスで要素を参照したり、追加したりすることができます。

2. Set(セット)

 Setは、格納される要素に重複が許されないコレクションです。また、リストのような順番はなく、要素は順不同に格納されます。

List、Setのイメージ
List、Setのイメージ

3. Queue

 Queue(キュー)は、窓口に人が並ぶような待ち行列を表したコレクションです。格納した要素を、古いものから順に取り出す処理に用います。

キューのイメージ
キューのイメージ

4. Map

 Map(マップ)は、要素を、一意のキーと値(オブジェクト)のペアで管理するコレクションです。要素を追加するには、オブジェクトとそれに対応したキーを登録し、要素を操作するには、このキーを用います。

コレクションの実装クラス

 Collections Frameworkには、これらのインターフェースを実装した、さまざなクラスが提供されています。次の表は、それぞれのインターフェースの主な実装クラスをまとめたものです。

コレクションインターフェースと主な実装クラス
インターフェース 主な実装クラス 概要・特徴
List ArrayList 可変長配列クラス
LinkedList リンク構造のリストクラス。ArrayListに比べて、任意の位置の追加が高速にできる
Vector 可変長配列クラス
Set HashSet 任意の順序で格納する
LinkedHashSet 格納順序の保障がある
TreeSet 要素がキーによって自動的にソートされる
Queue LinkedList リンク構造のリストクラス。上記LinkedListと同じ
PriorityQueue 優先順位つきキュークラス
ArrayDeque 両端キュークラス
Map HashMap 基本的なMapクラス
LinkedHashMap 格納順序の保障がある
TreeMap 要素がキーによって自動的にソートされる
Hashtable キー、値ともnullは禁止

ArrayListクラス

 ここでは、さまざな実装クラスのなかでも、もっとも基本的なArrayListクラスを見ていきましょう。名前にArrayがついているように、ArrayListクラスは、配列を拡張したような構造になっています。

 ArrayListを使うには、はじめにArraListクラスをインスタンス化します。通常は、次のように引数のないコンストラクタを使います。またジェネリックスに対応していますので、同時に要素の型も指定します。

// Integerクラスを指定
ArrayList<Integer> array = new ArrayList<Integer>();
// Stringクラスを指定
ArrayList<String> array = new ArrayList<String>();

 ArrayListに要素を追加するにはaddメソッド、要素をとりだすには、getメソッドを使います。getメソッドの引数は、配列と同様0から始まるインデックスです。

ArrayList<String> array = new ArrayList<String>();
array.add("ドル");
array.add("ポンド");
array.add("フラン");

String name = array.get(1); // ポンド

 ArrayListクラスのその他の主なメソッドは、前述の表「インターフェースの各メソッド」のとおりです。

Iteratorインターフェース

 コレクションを操作するインターフェースとして、Iterator(イテレータ、反復子)インターフェースというものが提供されています。イテレータとは、コレクションの要素を、1つずつ順番に処理するための仕組みで、さまざなコレクションに対して同じメソッドで操作することができます。なお、イテレータが使用できるクラスは、Iterableインターフェースを実装したものだけです。

 ちなみに拡張for文は、Iteratorを使ったループ処理を簡略した書き方で、内部的にIteratorが使われています。

次のページ
AndroidのGUIと非同期処理

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Android開発のためのJava SE再入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 高江 賢(タカエ ケン)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6135 2011/09/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング