初级 集合框架 treeSet 中comparable 和comparator接口实现位置的问题
TreeSet集合保证元素排序和唯一性的原理
唯一性:是根据比较的返回是否是0来决定。
排序:
A:自然排序(元素具备比较性)
//1.我的元素s所属类取名 student ,所以类的开头就会写成public class student implements comparable<student>
让元素所属的类实现自然排序接口 Comparable
B:比较器排序(集合具备比较性)
//2.我的元素s所属类取名 student ,这里要用比较器排序,comparator接口需要一个子类来实现,为什么不可以直接用Student来implements Comparator?而非要单独建一个类,来实现这个接口?
让集合的构造方法接收一个比较器接口的子类对象 Comparator
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
谢谢你的回复
楼上正解 如果Student类是别人写的呢 你想要按照你的方式来排序 所以这里就要用到比较器 推荐比较器很方便
哦!茅塞顿开原来需要结合实际开发来考虑问题。难怪要这样。谢谢你的答案
如果类Student是你自己设计推荐直接在Student类上implements Comparable<Student>
如果你没有办法获得别人的源码,例如Student的源码你没有办法获得(例如项目整合),那么你可以用TreeSet然后传递比较器覆盖掉别人编写的排序规则,所以建议你看看源码!