0
public class Book {
    String title;

    public Book(String t) {
        title = t;
    }
}

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

public class TreesetTest {
    public void go() {
        Book b1 = new Book("How");
        Book b2 = new Book("Remix");
        Book b3 = new Book("Finding ");

        Bookcomparator bc = new Bookcomparator();
        TreeSet<Book> set = new TreeSet<Book>(bc);
        set.add(b1);
        set.add(b2);
        set.add(b3);

        System.out.println(set);
    }
}

public class Test {
    public static void main(String args[]) {
        TreesetTest t = new TreesetTest();
        t.go();
    }
}

このプログラムを実行すると、次のように表示されます

[first.Book@c2ea3f, first.Book@a0dcd9, first.Book@1034bb5]

誰か助けてください。

4

1 に答える 1

6

クラスtoString()でメソッドをオーバーライドする必要があります。Book

@Override
public String toString() {
    return this.title;
}

または、より手の込んだものを試してください:

@Override
public String toString() {
    return "[Book: title='" + this.title + "']";
}

印刷物に見られるデフォルトの実装Object.toString()はあまり役に立ちませんfirst.Book@c2ea3f

于 2012-08-14T07:57:43.987 に答える