初级 集合框架 treeSet 中comparable 和comparator接口实现位置的问题

发布于 2021-11-30 12:03:12 字数 458 浏览 749 评论 4

 TreeSet集合保证元素排序和唯一性的原理

  唯一性:是根据比较的返回是否是0来决定。

  排序:

  A:自然排序(元素具备比较性)
//1.我的元素s所属类取名 student ,所以类的开头就会写成public class student implements comparable<student>

  让元素所属的类实现自然排序接口 Comparable

  B:比较器排序(集合具备比较性)
//2.我的元素s所属类取名 student ,这里要用比较器排序,comparator接口需要一个子类来实现,为什么不可以直接用Student来implements  Comparator?而非要单独建一个类,来实现这个接口?

  让集合的构造方法接收一个比较器接口的子类对象 Comparator

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

冷弦 2021-12-02 06:14:30

谢谢你的回复

凡尘雨 2021-12-01 23:16:14

楼上正解 如果Student类是别人写的呢 你想要按照你的方式来排序 所以这里就要用到比较器 推荐比较器很方便

感情旳空白 2021-12-01 23:15:11

哦!茅塞顿开原来需要结合实际开发来考虑问题。难怪要这样。谢谢你的答案

百思不得你姐 2021-12-01 09:49:26

如果类Student是你自己设计推荐直接在Student类上implements Comparable<Student>

如果你没有办法获得别人的源码,例如Student的源码你没有办法获得(例如项目整合),那么你可以用TreeSet然后传递比较器覆盖掉别人编写的排序规则,所以建议你看看源码!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文