java - 是否使用 compareTo
问题描述
我必须比较自定义类的对象,比如 A。
比较是基于 A 的 int 成员(比如 mem)的简单比较。
所以在比较器实现中,我可以这样做:
(A a1, A a2) -> {return (Integer)a1.getMem().compareTo(a2.getMem());}
或者,我可以自己进行比较:
(A a1, A a2) -> {
if(a1.getMem() > a2.getMem()){
return 1;
}else{
if(a1.getMem() < a2.getMem()) {
return -1;
}else{
return 0
}
}
}
哪个是更好的方法?
第一种方法的代码行数要少得多,但在内部 compareTo 与我们在第二种方法中所做的相同。
解决方案
通常最好不要重新发明轮子。因此,第一种方法更好。
您甚至可以使用以下代码编写更少的代码Comparator.comparingInt
:
Comparator.comparingInt(A::getMem)
推荐阅读
- bash - 如果 ping 失败,将wireguard 重新连接到另一个 VPN 服务器?
- python - 在 Python 中读取 csv 文件
- vue.js - 为什么 Vue 渲染组件不正确?
- pentaho - 在 Pentaho 中重命名 txt 文件名
- python-3.x - 有没有办法使用 groupby() 将缺失值显示为 df 中的一行?
- python-3.x - 如何从图像中获取文本?
- c - “make: *** [Makefile:58: install] Error 1”是什么意思?
- firebase - 我无法将 vue.js 页面中的数据添加到 firestore 数据库
- amazon-s3 - 尝试写入 S3 时,StreamingFileSink 有时不起作用
- spring-boot - 将相同的 .env 传递给多个 Docker 容器