TreeSet(对象排序功能)和自定义比较器
来源:互联网 发布:软件系统设计模板 编辑:程序博客网 时间:2024/06/05 02:53
排序功能:
package com.mth.test;class Person implements Comparable<Person> { // 实现Comparable接口的目的,在于建立Person对象的自然顺序 public int compareTo(Person p) {// 方法中就是Person的自然顺序// 对类中的成员变量,进行自然顺序比较// this 小 结果是负数 两个一样 是0 this 大就是正数int num = this.name.compareTo(p.name);return num == 0 ? this.age - p.age : num; } private String name; private int age; Person(String name, int age) {this.name = name;this.age = age; } public String getName() {return name; } public int getAge() {return age; } public String toString() {return this.name + "..." + this.age; } public int hashCode() {// 覆盖的依据,就是对象中的成员变量 name age// 姓名 和年龄一样的对象,具有同样的hashCode// lisi 22 100 + 22*2 = 144(122)// wangwu 25 97 + 25*2 = 147(122)// 乘以2降低,姓名年龄不一致,恰巧计算出了相同的哈希值的问题 //如果对象的哈希值一样,Set集合比较equalsfinal int X = 2;return this.name.hashCode() + this.age * X; } public boolean equals(Object obj) {if (obj == null) { return false;}if (this == obj) return true;if (obj instanceof Person) { Person p = (Person) obj; return this.name.equals(p.name) && this.age == p.age;}return false; }}
package com.mth.test;import java.util.Comparator;import java.util.Set;import java.util.TreeSet;/* * 自定义自己的比较器 让TreeSet进行比较 * * *///第一步public class MyComparator implements Comparator<Person> { // 自定义以年龄进行比较 @Override public int compare(Person p1, Person p2) {// TODO Auto-generated method stubint num = p1.getAge() - p2.getAge();// 等于0?就判断名字 如果不等于的话 直接返回numreturn num == 0 ? p1.getName().compareTo(p2.getName()) : num; } // 第二步 // 只需要再new TreeSet对象的时候 把new MyComparator() 传进构造函数即可 Set<Person> pset = new TreeSet<Person>(new MyComparator());}
0 0
- TreeSet(对象排序功能)和自定义比较器
- TreeSet排序,存储自定义对象,自定义比较器示例
- TreeSet存储自定义对象并保证排序和唯一
- TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式
- Map集合和TreeSet集合的使用:自定义比较器
- java中自定义对象排序(TreeSet)
- 【TreeSet】自然排序与比较器排序
- 往TreeMap和TreeSet里添加自定义对象的两种比较方法
- TreeSet集合中自定义比较器
- 《java入门第一季》之TreeSet存储自定义对象并保证排序和唯一
- TreeSet 使用指定比较器进行排序
- java比较接口Comparable,对象排序存在TreeSet中
- TreeSet实现自定义排序
- TreeSet自定义排序
- TreeSet存储自定义对象
- TreeSet存储自定义对象
- 关于TreeSet内添加具体的自定义对象的排序
- TREESET比较器比较
- 瓦片地图的URL解读
- 正则表达式的常用模式
- python-列表和元组
- Discuz!X2 搬家资料整理集合
- 算法-求二进制数中1的个数
- TreeSet(对象排序功能)和自定义比较器
- Not a DRM File, opening notmally
- 九度oj 题目1032:ZOJ 【ZJU2009考研机试题2】
- cocos2d-x 触摸消息详解
- 小米狼子的野心~~~不错不错!
- 【Qt体验-ConiaGUI】创建一个基础架构
- [JLOI2011]飞行路线 分层图最短路
- netbeans中路径的总结
- ckeditor编辑器Word文档粘贴自动去格式的解决方法