magazine.gif Java逆引きレシピ

第1章 Java開発の準備

  • 1.1 セットアップ
    • 001 JDKのセットアップ
    • 002 Eclipseのセットアップ
  • 1.2 実行
    • 003 Javaプログラムを作って実行したい
    • 004 Javaプログラムをデバッグしたい
    • 005 クラスパスを指定したい
    • 006 実行時のメモリを指定したい
    • 007 JARファイルを作りたい
    • 008 コマンドラインでコンパイル・実行したい

第2章 Javaの基本

  • 2.1 パッケージとインポート
    • 009 パッケージを宣言したい
    • 010 パッケージ、クラスをインポートしたい
    • 011 staticメンバをインポートしたい
  • 2.2 変数とデータ型
    • 012 Javaのデータ型について知りたい
    • 013 Javaのリテラルについて知りたい
    • 014 数値の計算を行ないたい
    • 015 ビット演算を行ないたい
    • 016 2つの値を比較したい
    • 017 「条件式 ? 式1 : 式2」とはなんですか?
    • 018 &&、||と&、|の違いを知りたい
    • 019 オブジェクトの型を調べたい
    • 020 変数の型を変換したい
    • 021 ラッパークラスってなに?
    • 022 nullってなに?
    • 023 Optional ってなに?
  • 2.3 コメント
    • 024 ソースにコメントを記述したい
    • 025 Javadocを記述したい
    • 026 Javadocを生成したい
  • 2.4 制御構文
    • 027 ifで条件分岐したい
    • 028 switchで条件分岐したい
    • 029 forで繰り返し処理を行ないたい
    • 030 whileで繰り返し処理を行ないたい
    • 031 繰り返し処理を途中で終了したい
  • 2.5 例外処理
    • 032 例外を処理したい
    • 033 複数の例外をまとめてキャッチしたい
    • 034 例外をスローしたい
    • 035 リソースを確実にクローズしたい
    • 036 スタックトレースの情報を取得したい
  • 2.6 ラムダ
    • 037 ラムダ式ってなに?
    • 038 汎用的な関数型インターフェースを使いたい
    • 039 独自の関数型インターフェースを定義したい
    • 040 ラムダ式を受け取るメソッドを定義したい
    • 041 ラムダ式の代わりにメソッドを渡したい
  • 2.7 文字列操作
    • 042 文字列を連結したい
    • 043 文字列の長さを調べたい
    • 044 文字列の一部を切り出したい
    • 045 文字列を分割したい
    • 046 文字列を比較したい
    • 047 文字列を置換したい
    • 048 特定の文字列で開始・終了しているかを調べたい
    • 049 特定の文字列が含まれているか知りたい
    • 050 大文字と小文字を変換したい
    • 051 文字列の前後の空白を削除したい
    • 052 文字列に変数を埋め込みたい
    • 053 文字コードを変更したい
    • 054 文字列を数値に変換したい
  • 2.8 正規表現
    • 055 文字列が正規表現に一致するか調べたい
    • 056 文字列を正規表現で検索したい
    • 057 文字列を正規表現で置換したい
  • 2.9 数値処理
    • 058 数値処理をしたい
    • 059 数値を任意の形式にフォーマットしたい
    • 060 乱数を生成したい
    • 061 丸め誤差の発生しない計算を行ないたい
    • 062 符号なしの整数を扱いたい

第3章 クラスとインターフェース

  • 3.1 基礎知識
    • 063 クラスを使いたい
    • 064 インターフェースを使いたい
    • 065 インターフェースにメソッドを実装したい
    • 066 ネストしたクラスを使いたい
    • 067 匿名クラスを使いたい
    • 068 クラスを継承したい
    • 069 抽象クラスを使いたい
    • 070 メソッドをオーバーライド・オーバーロードしたい
    • 071 staticメンバを使いたい
    • 072 イニシャライザを使いたい
    • 073 可変長引数を定義したい
  • 3.2 アクセス修飾子
    • 074 Javaのアクセス修飾子について知りたい
  • 3.3 列挙型(enum)
    • 075 列挙型を使いたい
    • 076 enum定数ごとにメソッドをオーバーライドしたい
    • 077 列挙型に効率良いコレクションを使いたい
  • 3.4 ジェネリクス
    • 078 Javaのバージョンによるジェネリクスの違いを知りたい
    • 079 ジェネリクスを定義したい
    • 080 型パラメータに制限を付けたい
    • 081 ワイルドカードってなにに使うの?
    • 082 型パラメータの可変長引数を安全に使いたい
  • 3.5 アノテーション
    • 083 標準アノテーションを知りたい
    • 084 独自アノテーションを作成したい
  • 3.6 タイプアノテーション
    • 085 タイプアノテーションってなに?
  • 3.7 リフレクション
    • 086 Classインスタンスを取得したい
    • 087 リフレクションでクラスのメンバの情報を取得したい
    • 088 リフレクションでインスタンスを生成したい
    • 089 リフレクションでメソッドやフィールドを呼び出したい
    • 090 リフレクションでジェネリクスの情報を取得したい
    • 091 リフレクションでアノテーションの情報を取得したい
  • 3.8 シリアライズ
    • 092 インスタンスをシリアライズ・デシリアライズしたい
    • 093 独自のシリアライズ・デシリアライズ処理をしたい

第4章 コレクション

  • 4.1 基礎知識
    • 094 コレクションについて知りたい
  • 4.2 配列
    • 095 配列を使いたい
    • 096 配列の長さを調べたい
    • 097 配列の要素を繰り返し処理したい
    • 098 配列をコピーしたい
    • 099 配列をソートしたい
    • 100 配列に特定の要素が含まれているか調べたい
    • 101 配列を比較したい
  • 4.3 List
    • 102 Listを使いたい
    • 103 Listに要素を追加したい
    • 104 Listの要素を取得したい
    • 105 Listの要素を変更したい
    • 106 Listの要素を削除したい
    • 107 Listの要素を繰り返し処理したい
    • 108 Listの要素数を調べたい
    • 109 Listをソートしたい
    • 110 Listに特定の要素が含まれるか調べたい
    • 111 2つのListを連結したい
    • 112 Listと配列を相互に変換したい
  • 4.4 Set
    • 113 Setを使いたい
    • 114 Setに要素を追加したい
    • 115 Setの要素を削除したい
    • 116 Setの要素を繰り返し処理したい
    • 117 Setの要素数を調べたい
    • 118 Setに特定の要素が含まれるか調べたい
    • 119 2つのSetを連結したい
  • 4.5 Map
    • 120 Mapを使いたい
    • 121 Mapに要素を追加したい
    • 122 Mapの値を取得したい
    • 123 Mapのキーを取得したい
    • 124 Mapの要素を取得したい
    • 125 Mapの要素を削除したい
    • 126 Mapの要素数を調べたい
    • 127 Mapに特定のキーが含まれるか調べたい
    • 128 Mapに特定の値が含まれるか調べたい
  • 4.6 Stream
    • 129 Streamを使いたい
    • 130 Streamで数値を扱いたい
    • 131 Streamの長さを調べたい
    • 132 Streamから重複する要素を排除したい
    • 133 Streamの要素を繰り返し処理したい
    • 134 Streamの要素をフィルタリングしたい
    • 135 Streamを連結したい
    • 136 Streamの要素を変換したい
    • 137 Streamの要素が条件に一致しているか調べたい
    • 138 Streamの要素を集計したい
    • 139 Streamの要素をソートしたい
    • 140 Streamの要素をグルーピングしたい
    • 141 Streamをコレクションに変換したい
    • 142 無限の長さを持つStreamを生成したい
    • 143 Streamの要素を並列に処理したい

第5章 日付操作

  • 5.1 基礎知識
    • 144 Javaでの日付操作について知りたい
    • 145 現在日時を取得したい
    • 146 年月日などを取得・設定したい
    • 147 日付を文字列にフォーマットしたい
    • 148 文字列を日付に変換したい
    • 149 日付の計算を行ないたい
    • 150 日付の前後関係を調べたい
    • 151 月の最終日を調べたい
    • 152 曜日を取得したい
  • 5.2 Time API
    • 153 Time APIで現在日時を取得したい
    • 154 Time APIで特定日時の日付を取得したい
    • 155 Time APIで日付を再設定したい
    • 156 Time APIで年月日などを取得したい
    • 157 Time APIの日時オブジェクトを相互変換したい
    • 158 Time APIの日付を文字列にフォーマットしたい
    • 159 Time APIで日時の計算を行ないたい
    • 160 Time APIで日付の前後関係を調べたい
    • 161 Time APIで月の最終日を調べたい
    • 162 文字列をTime APIのオブジェクトに変換したい
    • 163 Time APIで特定の期間を表わしたい
    • 164 Time APIで2つの日付の間隔を調べたい
    • 165 DateオブジェクトをTime APIの日付に変換したい
    • 166 Time APIをDateオブジェクトの日付に変換したい

第6章 ファイルと入出力

  • 6.1 基礎知識
    • 167 Javaでのファイル操作について知りたい
  • 6.2 ファイル
    • 168 ファイルやディレクトリが存在するか調べたい
    • 169 ファイルかディレクトリかを調べたい
    • 170 ファイルやディレクトリを削除したい
    • 171 ファイルを移動したい
    • 172 ファイルのサイズを調べたい
    • 173 ファイルの最終更新日時を調べたい
    • 174 ファイルの属性を調べたい
    • 175 ファイルの属性を設定したい
    • 176 ファイルの絶対パスを取得したい
    • 177 親ディレクトリを取得したい
    • 178 ディレクトリ内のファイル一覧を取得したい
    • 179 空のファイルを作成したい
    • 180 一時ファイルを作成したい
    • 181 ディレクトリを作成したい
  • 6.3 パス
    • 182 パスを絶対パスに変換したい
    • 183 親ディレクトリのパスを取得したい
    • 184 パスに対する相対パスを解決したい
    • 185 パスからファイルを作成したい
    • 186 パスからディレクトリを作成したい
    • 187 パスからリンクを作成したい
    • 188 パスが存在するかどうかを調べたい
    • 189 パスが示すファイルやディレクトリを削除したい
    • 190 パスが示すファイルやディレクトリを移動したい
    • 191 パスが示すファイルやディレクトリをコピーしたい
    • 192 パスから一時ファイルやディレクトリを作成したい
    • 193 パスが示すファイルやディレクトリの属性を取得・設定したい
    • 194 パスが示すディレクトリ内のファイル一覧を取得したい
    • 195 ディレクトリ内のファイルを再帰的に処理したい
    • 196 パスが示すファイルを読み込みたい
    • 197 パスが示すファイルを1行ずつ読み込みたい
    • 198 パスが示すファイルに書き出したい
    • 199 パスからストリームやチャネルを取得したい
    • 200 ファイルやディレクトリの変更を監視したい
  • 6.4 入出力
    • 201 Javaでの入出力について知りたい
    • 202 コンソールにメッセージを出力したい
    • 203 コンソールからの入力を受け取りたい
    • 204 ファイルの内容をバイト配列で読み込みたい
    • 205 バイト配列をファイルに書き出したい
    • 206 ファイルの内容を文字列で読み込みたい
    • 207 文字列をファイルに書き出したい
    • 208 ファイルの任意の部分に対する入出力を行ないたい
    • 209 クラスパスからファイルを読み込みたい
    • 210 プロパティファイルの内容を読み込みたい
    • 211 チャネルを使ってファイルの入出力を行ないたい
    • 212 ファイルをロックしたい
    • 213 ファイルをzipファイルに圧縮・展開したい

第7章 並行プログラミング

  • 7.1 基礎知識
    • 214 Javaの並行処理について知りたい
  • 7.2 スレッド
    • 215 スレッドで非同期処理を行ないたい
    • 216 スレッドで発生した実行時例外をハンドリングしたい
    • 217 マルチスレッドを排他制御したい
    • 218 マルチスレッドで同期を取りながら実行したい
    • 219 別スレッドが終了するまで待機したい
    • 220 スレッドの処理を一時停止したい
    • 221 スレッドに割り込みたい
    • 222 マルチスレッドで1つのフィールドにアクセスしたい
  • 7.3 タイマー
    • 223 特定の時間に一度だけ処理を実行したい
    • 224 一定間隔で繰り返し処理を実行したい
  • 7.4 Concurrency Utilities
    • 225 タスクを単一のスレッドで実行したい
    • 226 タスクをスケジューリングして実行したい
    • 227 タスクをスレッドプールを利用して実行したい
    • 228 非同期処理から結果を返したい
    • 229 複数のタスクの戻り値を早く終わった順に取得したい
    • 230 スレッドの同時実行数を制御したい
    • 231 スレッド間で相互にデータの受け渡しをしたい
    • 232 他の処理が完了するまでスレッドを待機したい
    • 233 別スレッドからのデータを受け取るまで待機したい
    • 234 別スレッドがデータを受け取るまで待機したい
    • 235 Lockでマルチスレッドを排他制御したい
    • 236 Lockで待ち合わせるスレッドの条件を指定したい
    • 237 参照・更新処理をマルチスレッドで行ないたい
    • 238 ロックを使わずにマルチスレッドでの読み取り処理を行ないたい
    • 239 値の取得や更新をアトミックに行ないたい
  • 7.5 Fork/Join Framework
    • 240 Fork/Join Framework ってなに?
    • 241 マルチコアを活用してタスクを細粒度で並列実行したい

第8章 XML

  • 8.1 基礎知識
    • 242 XMLの処理方法について知りたい
  • 8.2 DOM
    • 243 DOMでXMLを読み込みたい
    • 244 DOMでXMLを操作したい
    • 245 DOMで新しいXMLを生成したい
    • 246 DOMをXML 文字列に変換したい
    • 247 DOMで読み込んだXMLをXPathで検索したい
    • 248 DTDやXMLスキーマでXMLをバリデーションしたい
    • 249 外部DTDやXMLスキーマの読み込みを制限したい
  • 8.3 SAX
    • 250 SAXでXMLを読み込みたい
  • 8.4 StAX
    • 251 StAXでXMLを読み込みたい
    • 252 StAXでXMLを生成したい
  • 8.5 JAXB
    • 253 XMLをJavaオブジェクトにマッピングしたい

第9章 JDBC

  • 9.1 基本的なデータベース操作
    • 254 データベースに接続したい
    • 255 データベースを検索したい
    • 256 データベースに登録・更新・削除を行ないたい
    • 257 トランザクションを制御したい
  • 9.2 高度なデータベース操作
    • 258 ファイルをデータベースに格納したい
    • 259 データベースからファイルを取得したい
    • 260 データベースのエラーコードに応じた処理をしたい
    • 261 ストアドプロシージャを呼び出したい
    • 262 大量のデータをまとめて登録・更新したい
    • 263 データベースのメタデータを取得したい

第10章 JUnit

  • 10.1 基礎知識
    • 264 JUnit ってなに?
    • 265 テストを作成して実行したい
  • 10.2 テストケース
    • 266 プログラムの実行結果を確認したい
    • 267 JUnit 4で柔軟な比較をしたい(Matcher API)
    • 268 例外が発生することを確認したい
    • 269 テストの前後に処理を行ないたい
    • 270 テストクラスの実行前後に1 度だけ処理を行ないたい
    • 271 テストを一時的にスキップしたい
    • 272 前提条件によってテストケースの実行有無を制御したい
  • 10.3 ルール
    • 273 ルールってなに?
    • 274 テストメソッドの名前を取得したい
    • 275 タイムアウト値を設定したい
    • 276 例外の発生を詳細に検証したい
    • 277 途中でテストが失敗しても最後まで検証したい
    • 278 事後検証を共通化したい
    • 279 テストの実行を監視したい
    • 280 外部リソースを扱いたい
    • 281 一時フォルダ・ファイルを扱いたい
    • 282 カスタムルールを定義したい
    • 283 ルールの実行順序を制御したい
    • 284 テストクラスごとにルールを適用したい
  • 10.4 テストスイート
    • 285 複数のテストクラスをまとめて実行したい
    • 286 複数のテストケースをグルーピングしたい
    • 287 実行するテストケースを絞り込みたい
    • 288 1つのテストをパラメータを変えて実行したい

第11章 ネットワーク、ユーティリティ、システム

  • 11.1 ネットワーク
    • 289 URLの情報を取得したい
    • 290 Webサーバにリクエストを送信したい
    • 291 TCP通信を行なうクライアントを実装したい
    • 292 TCP通信を行なうサーバを実装したい
    • 293 チャネルを使ってTCP通信を行ないたい
    • 294 ノンブロッキングなTCPサーバを実装したい
  • 11.2 ユーティリティ
    • 295 メッセージを国際化したい
    • 296 ハッシュ値を求めたい
    • 297 暗号化したい
    • 298 外部コマンドを実行したい
    • 299 ログを出力したい
    • 300 JavaScriptを実行したい
    • 301 URLエンコード・デコードをしたい
    • 302 Base64エンコード・デコードをしたい
  • 11.3 システム
    • 303 システムプロパティを取得したい
    • 304 環境変数を取得したい
    • 305 空きメモリを調べたい
    • 306 メモリ使用状況を監視したい
    • 307 スレッドダンプを取得したい
    • 308 ヒープダンプを取得したい

COLUMN

  • Java8 対応のIDE
  • Eclipseの便利なショートカット
  • Eclipseが使用するメモリサイズを指定する
  • 文字列比較のNullPointerExceptionを回避する
  • ブロックと変数のスコープ
  • Java 7以降での例外の再スロー
  • ラムダ式から参照可能な外部変数
  • StandardCharsetsを使う
  • Stringクラスだけで手軽に正規表現を使う
  • ラムダ式の交差型キャスト
  • thisとは?
  • finalとは?
  • superとは?
  • リフレクションとは?
  • スレッドセーフなコレクションクラス
  • 空のコレクションが必要な場合
  • Arrays#asList()で簡単にListを生成する
  • イミュータブルなAPIとは?
  • Windowsで有効なドライブを取得する
  • toString()メソッドの重要性
  • Java 8で数値の更新をアトミックに行なう
  • XMLパーサの使い分け
  • StAXのイベントイテレータAPI
  • XMLの名前空間を扱う
  • プロキシ経由での通信
  • Javaのロギングライブラリ
  • ログメッセージ出力時のパフォーマンス
  • GCを強制的に実行する
  • Java Mission Control