java - stream.distinct() 返回非不同元素
问题描述
我无法让我的代码正确返回不同元素的列表。我有一个listToObserve
包含我的对象列表,GroupModel
其中有一个SimpleStringProperty
我使用该equals
方法确定相等性的对象。
class GroupModel(name: String = "myGroup") {
val nameProperty = SimpleStringProperty(this, "groupName", name)
var name: String by nameProperty
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as GroupModel
if (nameProperty.value != other.nameProperty.value) return false
return true
}
}
这是我尝试过的:
val distinctGroups = listToObserve.map { it.group }.stream().distinct().collect(Collectors.toList()).toObservable()
我对此的理解是不同的,应该按名称比较每个组,如果相等,则不会添加它,而是添加具有完全相同名称的组。有人可以帮我找出我的错误吗?
解决方案
推荐阅读
- java - 长按longclick事件时如何实现提示对话框?
- image - 当应用程序部署在新服务器中时,如果图像不是仅在 InternetExplorer 中呈现,问题可能出在哪里?
- apache-nifi - 如何使用 FreeFormTextRecordSetWriter
- android - Android导航组件中的条件导航
- python-3.x - 如何将一个值与一系列其他值取模?
- android - FAB backgroundTintList,不起作用并设置边框颜色
- chart.js - 为什么平移(和缩放)在我的 Chart.js 图表上不起作用?
- c# - Filehelpers 库无法读取 ™ 字符
- c++ - std::unordered_set::reserve 对容器内存要求的作用?
- regex - 匹配整个多行模式,多次但如果匹配包含字符串则不匹配