2014年4月10日木曜日

開発環境

Head First Java 第2版 ―頭とからだで覚えるJavaの基本(Kathy Sierra (著)、Bert Bates (著)、島田 秋雄 (監修)、神戸 博之 (監修)、高坂 一城 (監修)、夏目 大 (翻訳)、オライリージャパン)の16章(コレクションとジェネリック型)、自分で考えてみよう(p.565)を解いてみる。

自分で考えてみよう(p.565)

  1. コンパイルできる。
  2. 実行した時、TreeSetクラスのインスタンスを作成する際に比較方法が分からずにエラーになる。
  3. Comparableクラス、compareToメソッドをインプリメントするか、Comparator クラス、compareメソッドをインプリメントしたクラスを作成して、TreeSetクラスのインスタンスを作成する際に引数として渡せばいい。

コード(BBEdit, Emacs)

TestTree.java

import java.util.*;

public class TestTree {
    public static void main (String [] args) {
        new TestTree().go();
    }

    public void go() {
        Book1 b1 = new Book1("How Cats Work");
        Book1 b2 = new Book1("Remix your Body");
        Book1 b3 = new Book1("Finding Emo");
        Book2 b4 = new Book2("How Cats Work");
        Book2 b5 = new Book2("Remix your Body");
        Book2 b6 = new Book2("Finding Emo");
 
        TreeSet<Book1> tree1 = new TreeSet<Book1>();
        Book2Compare bc = new Book2Compare();
        TreeSet<Book2> tree2 = new TreeSet<Book2>(bc);
        tree1.add(b1);
        tree1.add(b2);
        tree1.add(b3);
        tree2.add(b4);
        tree2.add(b5);
        tree2.add(b6);
        System.out.println(tree1);
        System.out.println(tree2);
    }
}

class Book1 implements Comparable<Book1> {
    String title;
    public Book1(String t) {
        title = t;
    }
    public int compareTo(Book1 b) {
        return title.compareTo(b.title);
    }
    public String toString() {
        return title;
    }
}

class Book2 {
    String title;
    public Book2(String t) {
        title = t;
    }
    public String toString() {
        return title;
    }
}

class Book2Compare implements Comparator<Book2> {
    public int compare(Book2 one, Book2 two) {
        return one.title.compareTo(two.title);
    }
}

入出力結果(Terminal)

$ javac TestTree.java && java TestTree
[Finding Emo, How Cats Work, Remix your Body]
[Finding Emo, How Cats Work, Remix your Body]
$

0 コメント:

コメントを投稿