java - 删除列表 Java 中的重复对象
问题描述
我有课:
class MyClass {
String s1;
String s2;
}
列表对象包括
[{s1:“a”,s2:“b”},{s1:“a”,s2:“c”},{s1:“a”,s2:“b”},{s1:“a”, s2:“d”}]
我想删除对象重复 2 属性 s1 和 s2
预期结果:
[{s1:“a”,s2:“b”},{s1:“a”,s2:“c”},{s1:“a”,s2:“d”}]
如果能用Java 8就更好了
帮我 :(
解决方案
首先覆盖你喜欢的equals
andhashCode
方法,MyClass
@Override
public int hashCode() {
return 31 * s1.hashCode() + s2.hashCode();
}
@Override
public boolean equals(Object obj) {
return obj instanceof MyClass && ((MyClass) obj).getS1().equals(getS1())
&& ((MyClass) obj).getS2().equals(getS2());
}
那么消除重复的最简单方法是使用Set
.
new HashSet<>(instances)
推荐阅读
- qt - 禁用按钮时不会触发 MouseMoveEvent
- flutter - Flutter 未加载设备并显示“正在等待另一个 Flutter 命令释放启动锁......”
- .net - MassTransit:取消长时间运行的作业
- aws-lambda - Lambda 函数完成后,Amazon Cloudformation 堆栈挂起
- solr - 需要帮助在 Solr 上标记模型代码
- azure-devops - 如何将包描述添加到使用 DotNetCoreCLI 打包的 Nuget
- python - 如何在 tweepy 中显示推文的全文
- ios - ActivityViewController:弹出关闭时的completionHandler
- python - python tkinter 文本框控制台输出总是在最后一行?
- kotlin - 如何使用kotlin在列表中的每个项目内打印数字循环