Java Doc 読解 List 〜java.util.List その1〜

イントロダクション

自分の記憶によると、JavaDocを読まない人が多いイメージがあります。JavaAPIの使い方が書いてあるのでこれが読めればJavaを極めたといって過言ではないと思うのですが。。。

つまり、JavaDocを勧めたかったというわけです。。。

JavaDoc

JavaDocとは、作成したメソッド、クラスの説明を行うコメントです。しかし、通常のコメントと違うのは、「javadoc」コマンドを使用してJavaDocが出力できるところです。

自分の作成したものがドキュメントで一覧できれば、ちょっと嬉しいですし、実際には現場での作成してきたコードの説明などをこのJavaDocを使用して行えば、ずいぶんと学習コストが削減できると思います。つまるところは、若いエンジニアに「詠んでわからない所を聞いて」と言えるようにしておけるということです。

JavaDocを読む

Java Docの読解ということで、左のリンクはJava8のドキュメントで、Java8の概要を記述しているものになります。その中にある「java.util.List]インターフェイスクラスについて今回は読み進めてみようと思います。

リストはコレクションの仲間

コレクションフレームワーク(CollectionFramework日本語)のスーパーインターフェース(親インターフェース)にあるCollectionは
Collections Frameworkの根っこになるものです。

※スーパーインターフェース(親インターフェース)はコードに書くと下のようになります。

public interface 子供インターフェース extends 親インターフェース

このインターフェイスを実装(implements)しているクラスや継承しているインターフェイスがコレクションフレームワークの部品(クラス)になります。

ポイント

・ループ処理が楽になる
・便利なメソッドがあると思ってもらえばおっけ。
・Iteratableは「forEach」メソッドを提供します。→ラムダ式が使えるということ

List<E>のEはエレメント(要素)

を示し、ジェネリクスと呼びます。
リストなどを使用する時は大体これがもれなく付いてきます。

// ArrayListをListとして使用します。
List<String> list = new ArrayList<>();
// LinkedListをListとして使用します。
List<String> list = new LinkedList<>();
// VectorをListとして使用します。
List<String> list = new Vector<>();

上記の様に使用します。

用途としては、リストに登録した値をソート(並び替え)、指定したものの取得、リスト内にあるかチェックするなど

色々とあるので探してみるのも一興です。
百聞は一見にしかずです。ソースはこちらです。
Gitからダウンロードできます。

類似品にセット(Set)があります

toArray()はList→配列(T[])の形へ変換する

サンプルコードです。

ArrayList<TestA> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
   list.add(new TestA());
}
TestA[] items = new TestA[list.size];
items = list.toArray(items);

これで対象の型(クラス)を安全に取り出すことができます。

昔のやり方だとキャストしていましたので、コードとして美しくないし、ClassClastExceptionに対する注意が必要(安全な型変換ではない)なのでイマイチなコードでしたが、最近ではこのような方法があるのでGoodですね。

<イマイチなコード>

ArrayList<TestA> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
 list.add(new TestA());
}
// キャストしているので安全ではない
items = (TestA[]) list.toArray();

リストの主な機能

リストへの要素追加、削除、検査
ラムダ式オブジェクト取得

Collections

リストなどコレクションを扱うのに便利なクラスCollectionがあります。※以下にメソッドの一部を記載します。

  • Collection.addAll(): 指定されたすべての要素を指定されたコレクションに追加します。
  • Collection.disjoint(): 指定された2つのコレクションに共通の要素が存在しない場合、trueを返します。

List Map

Listの扱いに慣れたら、Mapインターフェースクラスも使ってみましょう。実態クラスとしては、HashMapクラス、LinkedHashMapクラスがあります。
そのほかにもありますが、今回はここまでにします。

関連ページ一覧

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜

JavaFX関連ページ

  1. Eclipse SceneBuilderを追加する
  2. JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
  3. JavaFX SceneBuilder〜ボタンにメソッドを割り当てるワンポイント〜
  4. Java プロコンゲーム 〜見た目の作成(SceneBuilderの使用)〜

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す