1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[java]おじさんの知識アップデート2

Posted at

おじさんの知識アップデート2

Java8で導入されたパッケージについてです。
今まで職場のutil系のクラスはライブラリチームが作ってくれたものを使っていましたが、今ではjavaに標準で実装されてる感じですかね。

Java 8 日付/時刻 API

Java 8では、java.timeパッケージが導入され、日付や時刻の操作が簡単で安全になりました。ここでは従来の書き方とJava 8 APIの書き方を比較します。


1. 従来の書き方(java.util.Date / Calendar

import java.util.Calendar;
import java.util.Date;

public class DateExample {
    public static void main(String[] args) {
        // 現在日時を取得
        Calendar calendar = Calendar.getInstance();
        Date now = calendar.getTime();
        System.out.println("現在日時: " + now);

        // 1週間後を計算
        calendar.add(Calendar.DAY_OF_MONTH, 7);
        Date nextWeek = calendar.getTime();
        System.out.println("1週間後: " + nextWeek);
    }
}

2. Java 8 API の書き方(java.time

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeExample {
    public static void main(String[] args) {
        // 現在日時
        LocalDateTime now = LocalDateTime.now();
        System.out.println("現在日時: " + now);

        // 1週間後
        LocalDateTime nextWeek = now.plusWeeks(1);
        System.out.println("1週間後: " + nextWeek);

        // 日付フォーマット
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
        System.out.println("フォーマット済: " + now.format(formatter));
    }
}

まとめ

項目 従来の書き方 Java 8 の書き方
日付/時刻取得 Calendar / Date LocalDateTime / LocalDate
日付計算 Calendar.add() plusWeeks(), plusDays()
フォーマット SimpleDateFormat DateTimeFormatter

Java 8 の java.time を使うと、日付や時刻の操作がより直感的でバグの少ないコードになります。

Java 8 Optional

Java 8では、Optionalクラスが導入され、null値による例外を防ぎ、より安全なコードを書くことができます。ここでは従来のnullチェックとJava 8 APIの書き方を比較します。


1. 従来の書き方(nullチェック)

public class OptionalOldExample {
    public static void main(String[] args) {
        String value = getValue();
        if (value != null) {
            System.out.println("値: " + value.toUpperCase());
        } else {
            System.out.println("値はありません");
        }
    }

    private static String getValue() {
        return null; // null を返す場合
    }
}

2. Java 8 API の書き方(Optional

import java.util.Optional;

public class OptionalExample {
    public static void main(String[] args) {
        Optional<String> value = Optional.ofNullable(getValue());

        // 値が存在する場合のみ処理
        value.ifPresent(v -> System.out.println("値: " + v.toUpperCase()));

        // 値が存在しない場合のデフォルト
        String result = value.orElse("値はありません");
        System.out.println(result);
    }

    private static String getValue() {
        return null; // null を返す場合
    }
}

まとめ

項目 従来の書き方 Java 8 の書き方
nullチェック if (value != null) Optional.ofNullable()
値の処理 if 文内で処理 ifPresent()
デフォルト値 if else で設定 orElse()

Optional を使うことで、null安全で読みやすいコードを書くことができます。

Java 8 Stream API

Java 8では、Stream APIを使うことでコレクションの操作を簡潔で直感的に行うことができます。ここでは従来のfor文とJava 8のStream APIの書き方を比較します。


1. 従来の書き方(for文)

import java.util.ArrayList;
import java.util.List;

public class StreamOldExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");

        List<String> result = new ArrayList<>();
        for (String name : names) {
            if (name.startsWith("A")) {
                result.add(name.toUpperCase());
            }
        }

        System.out.println(result);
    }
}

2. Java 8 API の書き方(Stream API

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class StreamExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        List<String> result = names.stream()
            .filter(name -> name.startsWith("A"))
            .map(String::toUpperCase)
            .collect(Collectors.toList());

        System.out.println(result);
    }
}

まとめ

項目 従来の書き方 Java 8 の書き方
コレクション操作 for 文 / if 文 Stream API
条件フィルター if 文 filter()
変換 手動でループ内変換 map()
集約 手動でリストに追加 collect(Collectors.toList())

Stream API を使うことで、コレクション操作が短く読みやすく、バグも減らせます。

所感

私の昔の職場でJavaを使っていた時は、このような便利なライブラリなど無く、if,for,switchなど駆使して処理を書いてたりしました。
アップデートされ続けて、便利道具が付け加えられていく分、その道具の使い方を定期的に学ばないと追いていかれるなと改めて感じました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?