Given the code fragments:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class Book implements Comparator<Book> { String name; double price; public Book() { } public Book(String name, double price) { this.name = name; this.price = price; } public int compare(Book b1, Book b2) { return b1.name.compareTo(b2.name); } public String toString() { return name + ":" + price; } } |
and
35 36 37 | List<Book> books = Arrays.asList(new Book("Beginning with Java", 2), new Book("A Guide to Java Tour", 3)); Collections.sort(books, new Book()); System.out.print(books); |
What is the result?
A.
[A Guide to Java Tour:3.0, Beginning with Java:2.0]
B.
[Beginning with Java:2.0, A Guide to Java Tour:3.0]
C. A compilation error occurs because the Book class does not override the abstract method compareTo().
D. An Exception is thrown at run time.
題解
Book類別實作了Comparator介面,並使用Book物件的name欄位的字串辭典順序來作為排序的依據。
程式第36行,使用了Collections類別的sort方法並傳入Book這個Comparator物件來排序集合物件。
由於A的辭典順序在B的前面,因此排序之後會輸出:
[A Guide to Java Tour:3.0, Beginning with Java:2.0]
留言