TreeSet方法之一 当向TreeSet中添加Person对象 续 确定按哪个属性排序
来源:互联网 发布:新百伦淘宝官方旗舰店 编辑:程序博客网 时间:2024/06/07 08:30
package andycpp;public class Person implements Comparable {private String name;private Integer age;//get set 方法public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}//无参构造器public Person() {super();}//带参构造器public Person(String name, Integer age) {super();this.name = name;this.age = age;}//toString@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((age == null) ? 0 : age.hashCode());result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Person other = (Person) obj;if (age == null) {if (other.age != null)return false;} else if (!age.equals(other.age))return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}//重写了未实现的抽象方法,方法实现了什么功能:就是你希望按照哪个属性来排列//当向TreeSet中添加Person类的对象时,依据此方法,确定按照哪个属性排列//Person有两个属性name,age,这里按照age 排序@Overridepublic int compareTo(Object o) {if(o instanceof Person){ //保证是Person类型的Person p = (Person)o;//return this.name.compareTo(p.name);//name已经重写了compareTo//return this.age.compareTo(p.age);//从小到大return -this.age.compareTo(p.age);//从大到小} return 0; //如果不是这个类型,就返回0,}}
package andycpp;import java.util.Iterator;import java.util.Set;import java.util.TreeSet;import org.junit.Test;/** * Collection接口: * List接口 * ArrayList(主要的实现类) * LinkedList(对于频繁的插入删除操作) * Vector(古老的实现类,线程安全,但效率要低于ArrayList) * Set接口存储无序,不可重复的元素.Set中常用的方法都是Collection下定义的。 * HashSet(主要实现类) * LinkedHashSet * TreeSet * */public class TestSet {/* * TreeSet: * 1,向TreeSet中添加的元素必须是同一个类的。类型相同 * 2,可以按照添加进集合中的元素的指定的顺序遍历。像String,包装类等默认按照从小到大的顺序遍历。 * 3,当向TreeSet中添加自定义类的对象时,有两种排序方法: 自然排序和定制排序 * 4,自然排序:要求自定义类实现java.lang.Comparable接口并重写其compareTo(Object obj)方法 * 在此方法中,指明按照自定义类的哪个属性进行排序。 * * */@Testpublic void testTreeSet1(){Set set = new TreeSet();/* * 当Person类没有实现Comparable接口时,当向TreeSet中添加Person对象时,报ClassCastException错误 * * */set.add(new Person("CC",23));set.add(new Person("MM",21));set.add(new Person("GG",25));set.add(new Person("JJ",24));set.add(new Person("DD",20));for(Object str :set){System.out.println(str);}}}
输出
Person [name=GG, age=25]
Person [name=JJ, age=24]
Person [name=CC, age=23]
Person [name=MM, age=21]
Person [name=DD, age=20]
0 0
- TreeSet方法之一 当向TreeSet中添加Person对象 续 确定按哪个属性排序
- TreeSet方法之一 当向TreeSet中添加Person对象 续 当有多个属性值时的自然排序
- TreeSet方法之一当向TreeSet中添加Person对象 情况一
- TreeSet方法之一 向TreeSet中添加的元素
- compareTo方法重写错误导致TreeSet中无法添加对象
- TreeSet实现集合中对象排序
- java中自定义对象排序(TreeSet)
- 向TreeSet集合中添加元素出现ClassCastException问题
- 关于TreeSet内添加具体的自定义对象的排序
- 往TreeSet中存入自定义对象,并且使用自定义排序方法(实现comparetor)
- 如何在TreeSet中添加两个不具可比性的对象!
- [第三季]11.在TreeSet中添加自定义对象
- java比较接口Comparable,对象排序存在TreeSet中
- TreeSet排序
- TreeSet 排序
- TreeSet排序
- TreeSet 排序
- 类 TreeSet<E> 遍历 TreeSet<String> 和TreeSet<Person>
- HDFS,YARN,HBASE,ZOOKEEPER主要默认端口
- CCF 201509-3 模板生成系统
- 自己写的一个简单的Android终端模拟器
- IOS 点击查看预览大图缩放图片往下掉的处理
- 百度BAE部署java web(Jforum)项目
- TreeSet方法之一 当向TreeSet中添加Person对象 续 确定按哪个属性排序
- c++
- [51nod1634][hdu5729]刚体图
- 深入浅出ES6(五):不定参数和默认参数
- 输入三个字符串,允许有空格,输出最大公共子串 例如输入: what your name my name is ABC
- iframe和frame的区别
- IOS 委托代理(delegate)实现页面传值
- 自己的第一个博客
- Eclipse快捷键 10个最有用的快捷键