Java逆引きレシピ 第2版


Java逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)


翔泳社


著者:竹添直樹、高橋和也、島本多可子、佐藤聖規


はじめに
本書の対象と構成
誌面の構成
サンプルプログラムについて

第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 列挙型
 075 列挙型を使いたい
 076 enum定数ごとにメソッドをオーバーライドしたい
 077 列挙型に効率の良いコレクションを使いたい
3.4 ジェネリクス
 078 Javaのバージョンによるジェネリクスの違いを知りたい
 079 ジェネリクスを定義したい
 080 型パラメータに制限を付けたい
 081 ワイルドカードってなにに使うの?
 082 型パラメータの可変長引数を安全に使いたい
3.5 アノテーション
 083 標準アノテーションを知りたい
 084 独自アノテーションを作成したい
3.6 リフレクション
 085 Classインスタンスを取得したい
 086 リフレクションでクラスのメンバの情報を取得したい
 087 リフレクションでインスタンスを生成したい
 088 リフレクションでメソッドやフィールドを呼び出したい
 089 リフレクションでジェネリクスの情報を取得したい
 090 リフレクションでアノテーションの情報を取得したい
3.7 シリアライズ
 091 インスタンスをシリアライズ・デシリアライズしたい
 092 独自のシリアライズ・デシリアライズ処理をしたい

第4章 コレクション
4.1 導入
 093 コレクションについて知りたい
4.2 配列
 094 配列を使いたい
 095 配列の長さを調べたい
 096 配列の要素を繰り返し処理したい
 097 配列をコピーしたい
 098 配列をソートしたい
 099 配列に特定の要素が含まれているか調べたい
 100 配列を比較したい
4.3 List
 101 Listを使いたい
 102 Listに要素を追加したい
 103 Listの要素を取得したい
 104 Listの要素を変更したい
 105 Listの要素を削除したい
 106 Listの要素を繰り返し処理したい
 107 Listの要素数を調べたい
 108 Listをソートしたい
 109 Listに特定の要素が含まれるか調べたい
 110 2つのListを連結したい
 111 Listと配列を相互に変換したい
4.4 Set
 112 Setを使いたい
 113 Setに要素を追加したい
 114 Setの要素を削除したい
 115 Setの要素を繰り返し処理したい
 116 Setの要素数を調べたい
 117 Setに特定の要素が含まれるか調べたい
 118 2つのSetを連結したい
4.5 Map
 119 Mapを使いたい
 120 Mapに要素を追加したい
 121 Mapの値を取得したい
 122 Mapのキーを取得したい
 123 Mapの要素を取得したい
 124 Mapの要素を削除したい
 125 Mapの要素数を調べたい
 126 Mapに特定のキーが含まれるか調べたい
 127 Mapに特定の値が含まれるか調べたい
4.6 Stream
 128 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の要素を並列に処理したい

第5章 日付操作
5.1 導入
 143 Javaでの日付操作について知りたい
 144 現在の日付を取得したい
 145 現在日時をUNIX時間で取得したい
 146 年月日などを取得・設定したい
 147 日付を文字列にフォーマットしたい
 148 文字列を日付に変換したい
 149 日付の計算を行ないたい
 150 日付の前後関係を調べたい
 151 月の最終日を調べたい
 152 曜日を取得したい
5.2 Date and Time API
 153 Date and Time APIで現在日時を取得したい
 154 Date and Time APIで特定日時の日付を取得したい
 155 Date and Time APIで日付を再設定したい
 156 Date and Time APIで年月日などを取得したい
 157 Date and Time APIの日時オブジェクトを相互変換したい
 158 Date and Time APIの日付を文字列にフォーマットしたい
 159 Date and Time APIで日時の計算を行ないたい
 160 Date and Time APIで日付の前後関係を調べたい
 161 Date and Time APIで月の最終日を調べたい
 162 文字列をDate and Time APIのオブジェクトに変換したい
 163 Date and Time APIで特定の期間を表したい
 164 Date and Time APIで2つの日付の間隔を調べたい
 165 DateオブジェクトをDate and Time APIの日付に変換したい
 166 Date and 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 文字列をファイルに書き出したい207
 208 ファイルの任意の部分に対する入出力を行ないたい
 209 クラスパスからファイルを読み込みたい
 210 プロパティファイルの内容を読み込みたい
 211 チャネルを使ってファイルの入出力を行ないたい
 212 ファイルをロックしたい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 別スレッドがデータを受け取るまで待機したい
 236 Lockでマルチスレッドを排他制御したい
 237 Lockで待ち合わせるスレッドの条件を指定したい
 238 参照・更新処理をマルチスレッドで行ないたい
 239 ロックを使わずにマルチスレッドでの読み取り処理を行ないたい
 240 値の取得や更新をアトミックに行ないたい
7.5 Fork/Join Framework
 241 Fork/Join Framework ってなに?
 242 マルチコアを活用してタスクを細粒度で並列実行したい

第8章 JDBC
8.1 基本的なデータベース操作
 243 データベースに接続したい
 244 データベースを検索したい
 245 データベースに登録・更新・削除を行ないたい
 246 トランザクションを制御したい
8.2 高度なデータベース操作
 247 ファイルをデータベースに格納したい
 248 データベースからファイルを取得したい
 249 データベースのエラーコードに応じた処理をしたい
 250 ストアドプロシージャを呼び出したい
 251 大量のデータをまとめて登録・更新したい
 252 データベースのメタデータを取得したい

第9章 Junit
9.1 導入
 253 JUnit ってなに?
 254 テストを作成して実行したい
9.2 テストケース
 255 プログラムの実行結果を確認したい
 256 複数のassert文をまとめて処理したい
 257 例外が発生することを確認したい
 258 テストの前後に処理を行ないたい
 259 テストクラスの実行前後に一度だけ処理を行ないたい
 260 テストを一時的にスキップしたい
 261 前提条件によってテストケースの実行有無を制御したい
 262 OSによってテストケースの実行有無を制御したい
 263 Javaのバージョンによってテストケースの実行有無を制御したい
 264 システムプロパティによってテストケースの実行有無を制御したい
 265 環境変数によってテストケースの実行有無を制御したい
 266 テストメソッドの表示名を設定したい
 267 テストメソッドをグループ化したい
 268 テストメソッド名を取得したい
 269 テストのタイムアウト値を設定したい
9.3 テストスイート
 270 複数のテストクラスをまとめて実行したい
 271 グルーピングしたテストケースを実行したい
 272 実行するテストケースをパッケージで絞り込みたい
 273 実行するテストケースを正規表現で指定したい

第10章 ネットワーク、システム、ユーティリティ
10.1 ネットワーク
 274 URLの情報を取得したい
 275 Webサーバにリクエストを送信したい
 276 TCP 通信を行なうクライアントを実装したい
 277 TCP 通信を行なうサーバを実装したい
 278 チャネルを使ってTCP 通信を行ないたい
 279 ノンブロッキングなTCPサーバを実装したい
10.2 ユーティリティ
 280 メッセージを国際化したい
 281 ハッシュ値を求めたい
 282 暗号化したい
 283 UUIDを生成したい
 284 経過時間を測定したい
 285 外部コマンドを実行したい
 286 ログを出力したい
 287 URLエンコード・デコードをしたい
 288 Base64エンコード・デコードをしたい
10.3 システム
 289 システムプロパティを取得したい
 290 環境変数を取得したい
 291 空きメモリを調べたい
 292 メモリ使用状況を監視したい
 293 スレッドダンプを取得したい
 294 ヒープダンプを取得したい

第11章 これからのJava
11.1 リリースポリシーの変更
 295 Java 9 以降の概要が知りたい
11.2 モジュールシステム
 296 モジュールシステムってなに?
 297 モジュールシステムの利用方法を知りたい(Eclipse)
 298 モジュールシステムの利用方法を知りたい(コマンドラインツール)
11.3 新しい構文
 299 ローカル変数の型推論について知りたい
 300 @SafeVarargsアノテーションの新機能を知りたい
 301 try-with-resources文の新機能を知りたい
 302 ジェネリクスを使った匿名クラスの型パラメータを省略したい
 303 インターフェースにprivateメソッドを定義したい
11.4 APIの拡張
 304 @Deprecatedに追加された属性を知りたい
 305 Optionalの拡張について知りたい
 306 コレクションの拡張について知りたい
 307 Reactive Streamsを使いたい
 308 CompletableFutureの拡張について知りたい
 309 HTTP/2やWebSocketに対応したHTTPクライアントAPIを使いたい
 310 Process APIの改善点を知りたい
11.5 ツール
 311 jshell: The Java Shell (REPL)について知りたい
11.6 その他
 312 Dockerコンテナのための改善を知りたい
 313 ResourceBundleのデフォルトファイルエンコーディングのを知りたい
 314 SHA-3 暗号化ハッシュをサポート
 315 ラッパークラスの生成方法のを知りたい
 316 単一ソースファイルをjavaコマンドで直接実行したい

索引

書籍目次

Posted by shi-n