Head First Java 第2版
頭とからだで覚えるJavaの基本
(オライリージャパン)
Kathy Sierra (著) Bert Bates (著) 島田 秋雄(監修)
神戸 博之 (監修) 高坂 一城 (監修) 夏目 大 (翻訳)
開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Java (プログラミング言語)
- javac (コンパイラ)
- java (application launcher)
Head First Java 第2版 ―頭とからだで覚えるJavaの基本(Kathy Sierra (著)、Bert Bates (著)、島田 秋雄 (監修)、神戸 博之 (監修)、高坂 一城 (監修)、夏目 大 (翻訳)、オライリージャパン)の16章(コレクションとジェネリック型)、自分で考えてみよう(p.565)を解いてみる。
自分で考えてみよう(p.565)
- コンパイルできる。
- 実行した時、TreeSetクラスのインスタンスを作成する際に比較方法が分からずにエラーになる。
- 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 コメント:
コメントを投稿