Javaの便利な小ネタ
Javaは、初心者からプロまで広く使われているプログラミング言語です。そのため、Javaの開発環境やライブラリなどについても、多岐にわたる便利な機能が搭載されています。この記事では、そんなJavaの便利な小ネタについて紹介します。
1. メソッドチェーン
Javaでは、複数のメソッドをつなげて呼び出す「メソッドチェーン」を実現することができます。これにより、処理を組み立てる段階で一連のメソッド呼び出しを行うことができるため、可読性の高いコードが書けます。
例えば、次のようなメソッド列を考えます。
StringBuilder sb = new StringBuilder();
sb.append("Hello, ")
.append("world!")
.append("\n")
.delete(0, 7);
System.out.println(sb.toString());
このコードでは、StringBuilderクラスにappendメソッドを続けて呼び出した後、deleteメソッドを呼び出しています。この場合、最初のappendメソッド呼び出しではStringBuilderのインスタンスを返し、次のメソッド呼び出しでは同じインスタンスを返すように設計されているため、メソッドチェーンを実現できます。
2. 可変長引数
Javaでは、メソッドの引数に可変長の引数を指定することもできます。可変長引数を指定する場合は、引数の型の後ろに「...」を付けて宣言します。この機能を利用することで、可変長の引数を持つメソッドをスマートに作ることができます。
例えば、次のようにして可変長引数を指定したメソッドを作成できます。
public static int sum(int... nums)
{
int sum = 0;
for (int num : nums) {
sum += num;
}
return sum;
}
このメソッドは、引数の個数が可変であるため、引数に任意の数値を渡せます。
sum(1, 2, 3); // 6
sum(1, 2, 3, 4, 5); // 15
3. ファイル入出力
Javaでは、ファイル入出力をさまざまな方法で行うことができます。特に、Java 7以降では、try-with-resources構文を使ってファイルを読み書きすることができるので、ストリームのクローズ処理を忘れずに行うことができます。
例えば、次のようなコードでファイルを読み込むことができます。
try (BufferedReader br = new BufferedReader(new FileReader("input.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
4. コンソール入力
Javaでは、コマンドラインからの入力を簡単に取得することができます。具体的には、Scannerクラスを使うことで、標準入力から値を読み込むことができます。
例えば、次のようなコードでコマンドラインから値を読み込むことができます。
Scanner scanner = new Scanner(System.in);
System.out.print("名前を入力してください: ");
String name = scanner.nextLine();
System.out.print("年齢を入力してください: ");
int age = scanner.nextInt();
5. Stream API
Java 8から追加されたStream APIは、コレクションの要素を扱いやすい方法を提供します。このAPIでは、メソッドチェーンのスタイルを利用しながらキャスト、フィルタリング、マッピング、抽出などの操作を行うことができます。
例えば、次のようなコードでリストの要素の平均値を計算することができます。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
double average = numbers.stream()
.mapToInt(Integer::intValue)
.average()
.getAsDouble();
まとめ
Javaの便利な小ネタについていくつか紹介しました。これらの機能を利用することで、Javaでのプログラミングがさらにスマートになることが期待できます。今後のプログラミングの参考にしてみてください!
【参考リンク】
- Oracle Japan:Java技術情報
- Qiita:Javaの要点を5分で整理する(前編)
- Baeldung:JavaのStream APIの使い方を振り返って、リストや配列から値を抽出する、マップ化する、平均値を出すなどの操作を詳しく紹介します。
- SitePoint:Javaファイル入出力入門
- journaldev:JavaのScannerクラスによるユーザー入力の取得方法について説明します。
- Quartz (JDT):Javaの可変長引数リストを紹介します。