java - 对数组列表对象的值进行排序并在一个 lambda 中打印其中的多个
问题描述
我的目标是打印出四个值中的两个值 - 名称(字符串)和头发颜色(枚举) - 描述数组列表中的某个对象。问题在于按名称按字母顺序对打印列表进行排序。这一切都必须在一个 lambda 中。
我坚持只打印出来,没有排序。我已经设置了覆盖,但由于我还在学习,我似乎无法让它工作。
public void printAllNamesColours() {
people.stream()
.forEach(n->System.out.println(n.getName() + " " + n.getColour()));
}
@Override
public int compareTo(Person person) {
int ret = name.compareToIgnoreCase(person.name);
if (ret == 0) {
ret = colour.compareTo(person.colour);
}
if (ret == 0) {
ret = age - person.age;
}
return ret;
}
解决方案
您可以使用以下方式对其进行排序Stream.sorted
:
people.stream()
.sorted() // considering your `compareTo` implementation
.forEach(n -> System.out.println(n.getName() + " " + n.getColour()));
推荐阅读
- flutter - 可以在 main.dart Flutter 中调用提供者函数吗
- javascript - ES6 类:将“this”绑定到嵌套函数
- javascript - 如何使用 React Router 将数据传递给不在 URL 中的另一个组件
- python - OpenCV 录制的网络摄像头视频比现实生活中的 Python 更快
- azure - 是否可以将 Azure SignalR 服务与本地 SignalR 结合使用?
- javascript - 调用vue路由器时超出最大调用堆栈大小
- c++ - OpenGL奇怪的鼠标旋转结果
- css - 如何识别设备是水平旋转还是垂直旋转?
- sql - 如何从以 BLOB 类型存储在列中的 XML 中提取数据(通过 SQL 查询)
- pine-script - 有没有办法从数据窗口中隐藏特定的指标值?