TreeSet
发布时间:2020-12-15 07:24:35 所属栏目:Java 来源:网络整理
导读:HashSet 是无序的,如果要对集合实现排序,那么就需要使用TreeSet 让TreeSet 实现集合有序 当 TreeSet中元素是基本数据类型时: package test; import java.util.Iterator;import java.util.TreeSet;public class TreeSetDemo {/** * TreeSet中放置基本类型 *
HashSet 是无序的,如果要对集合实现排序,那么就需要使用TreeSet 让TreeSet 实现集合有序 当 TreeSet中元素是基本数据类型时: package test; 输出结果为:无序,但是这看似无序的集合其中却是有序的,字符串按照字典顺序排序输出。 ? ? ? 当 TreeSet中的元素是一个对象时: package test; import java.util.Iterator; import java.util.TreeSet; public class TreeSetDemo { /** * TreeSet中放置基本类型 * @param args */ /* public static void main(String[] args) { demo1(); } //创建类TreeSetDemo的静态方法 public static void demo1() { TreeSet ts = new TreeSet(); ts.add("abc"); ts.add("zaa"); ts.add("aa"); ts.add("nba"); ts.add("cba"); Iterator it = ts.iterator(); while(it.hasNext()){ System.out.println(it.next()); } }*/ /** * TreeSet中放置类 * 此时会报错 ,查看错误原因:java.lang.ClassCastException: test.Person cannot be cast to java.lang.Comparable * 类装换异常 * @param args */ public static void main(String[] args) { TreeSet ts = new TreeSet(); ts.add(new Person("lisi",21)); ts.add(new Person("zhangsan",28)); ts.add(new Person("zhaoliu",25)); ts.add(new Person("zhouqi",29)); ts.add(new Person("wangu",24)); Iterator it = ts.iterator(); while(it.hasNext()){ Person p = (Person)it.next(); System.out.println(p.getName()+":"+p.getAge()); } } } //自定义类package test; public class Person{ private String name; private int age; //无参构造 public Person() { super(); } //带参构造 public Person(String name,int age) { super(); this.name = name; this.age = age; } //重写hashCode()方法 @Override public int hashCode() { return name.hashCode()+age*27; //将age和name设置成为hashCode。 } //重写Object的equals() 方法 @Override public boolean equals(Object obj) { if(this == obj) return true; if(!(obj instanceof Person)) throw new ClassCastException("类型错误"); // System.out.println(this+"....equals....."+obj); Person p = (Person)obj; return this.name.equals(p.name) && this.age == p.age; //通过对比当前对象与下个将要比较的对象的姓名和age 是否相同来确定是否为同一个对象。 } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return name+":"+age; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |