【发布时间】:2020-02-06 15:18:57
【问题描述】:
这里有一些列表
List<Book> list = new ArrayList<>();
{
list.add(new Book("Core Java", 200));
list.add(new Book("Core Java", 500));
list.add(new Book("Core Java", 800));
list.add(new Book("Learning Freemarker", 150));
list.add(new Book("Learning Freemarker", 1350));
list.add(new Book("Learning Freemarker", 1250));
list.add(new Book("Spring MVC", 300));
list.add(new Book("Spring MVC", 600));
list.add(new Book("Spring MVC", 1600));
}
我想显示这样的书单
Core Java", 800
Learning Freemarker", 1350
Spring MVC", 1600
每一个元素
list .stream().distinct()
.sorted(Comparator.comparing(Book::bookname)
.thenComparing(Book::getPrice)).collect(Collectors.toList());
此代码仅排序。
【问题讨论】:
-
请出示
Book类的代码。你有equals和hashCode覆盖吗? -
书是样本类
private string bookname ; private string price;它完成了; -
@user3066285 - @ernest_k 主要感兴趣的是
equals和hashcode实现,如果您因为在示例代码中使用了distinct而覆盖了它们。
标签: java foreach java-8 java-stream