/** * ドメイン非依存URL出力フィルタ * javadrill.tech移行時はwp_options.home/siteurlのみ変更すればよい * * データベースには絶対URL(https://minner.asia)を保持し、 * 表示時に現在のドメイン(home_url())に動的変換する */ function javadrill_make_urls_dynamic($content) { if (empty($content)) { return $content; } // データベース内の絶対URLを現在のhome_url()に置換 $old_url = 'https://minner.asia'; $new_url = untrailingslashit(home_url()); // http版も対応(念のため) $content = str_replace($old_url, $new_url, $content); $content = str_replace('http://minner.asia', $new_url, $content); return $content; } // 投稿本文、ウィジェット、タームの説明、抜粋に適用 add_filter('the_content', 'javadrill_make_urls_dynamic', 20); add_filter('widget_text', 'javadrill_make_urls_dynamic', 20); add_filter('term_description', 'javadrill_make_urls_dynamic', 20); add_filter('get_the_excerpt', 'javadrill_make_urls_dynamic', 20); 018 オブジェクト指向の深化(オブジェクトの比較とハッシュコーディング) 024 問題 | Javaドリル

018 オブジェクト指向の深化(オブジェクトの比較とハッシュコーディング) 024 問題

018-024 018 オブジェクト指向の深化

問題

次に、以下の Library クラスがあります。このクラスは複数の書籍を管理します。Library クラスには重複する書籍を管理しないようにするために必要な Set を使用しています。しかし、Book クラスの equals メソッドと hashCode メソッドが正しく実装されていない場合、Set が正しく機能しない可能性があります。Library クラスが正しく動作するように、Book クラスの equals メソッドと hashCode メソッドを修正してください。

import java.util.HashSet;
import java.util.Set;

public class Library {
    private Set<Book> books;

    public Library() {
        this.books = new HashSet<>();
    }

    public void addBook(Book book) {
        books.add(book);
    }

    public boolean containsBook(Book book) {
        return books.contains(book);
    }

    // その他のメソッドやコードは省略
}

ヒント

  1. hashCodeメソッドの実装: hashCodeメソッドは、オブジェクトのハッシュコードを生成するために使用されます。オブジェクトが等しい場合、hashCodeメソッドが同じ値を返すように実装する必要があります。
  2. getClassメソッドの利用: getClassメソッドを使用して、オブジェクトの実際のクラスを取得できます。これを利用して、異なる型のオブジェクトに対してクラスに基づいたハッシュコードを生成できます。
  3. hashCodeの計算方法: 異なる型のオブジェクトに対してハッシュコードを生成する場合、各型ごとに独自の計算方法を考える必要があります。異なる型が同じハッシュコードを持たないようにする工夫が必要です。
  4. 一貫性と性能のバランス: hashCodeメソッドの実装においては、一貫性と性能のバランスが重要です。同じオブジェクトに対しては常に同じハッシュコードを返すことが期待されますが、パフォーマンスも考慮して高速に計算できる実装を心掛けます。

これらのヒントを参考にして、異なる型のオブジェクトに対して正確なハッシュコードを生成する実装を考えてみてください。

→解答例

「018 オブジェクト指向の深化」問題集リスト

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

コメント

タイトルとURLをコピーしました