Jav*_*Man 4 java lambda expression comparator treeset
我的任务是使用构造函数 TreeSet( Comparator<E> comparator
) 和 lambda 表达式来使集合按书名排序。
给出以下信息:
public class Book implements Comparable<Book> {
private String isbn;
private String title;
private String author;
public int compareTo(Book obj) {
return isbn.compareTo(obj.isbn);
}
// all-args constructor and getters
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我的想法是:我认为构造函数允许您定义比较器。也许我应该这样做:
Comparator<String> comp =
(String title, String obj.title) -> (title.compareTo(obj.title));
Run Code Online (Sandbox Code Playgroud)
然后将此 comp 放入TreeSet<Book> bookSet = new TreeSet<Book>(comp);
然而,这似乎不起作用。我认为我需要做的是在创建新的 TreeSet 时在同一行中使用 lambda 表达式,但是,我不确定如何执行此操作。
你需要一个Comparator<Book>
,而不是一个Comparator<String>
。获得它的最简单方法是使用Comparator.comparing
:
TreeSet<Book> bookSet = new TreeSet<>(Comparator.comparing(Book::getTitle));
Run Code Online (Sandbox Code Playgroud)