Set集合下的奇葩,TreeSet有序而且类型相同

玩了一下Set集合,都知道Set集合是无序的而且不可重复,

但是,Set有一个子类却有序,这个子类就是TreeSet,而且会自动排序,

但是,添加到TreeSet中的数据类型必须是相同的:

下面是我的代码:

class Demo02 {


public static void main(String[] args) {

Set set = new TreeSet();

set.add(1);
set.add("a");
set.add(2);

Iterator iterator = set.iterator();
while(iterator.hasNext()){
Object value = iterator.next();
System.out.println(value);
}
}

运行的时候会报错:

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at java.lang.String.compareTo(String.java:108)
at java.util.TreeMap.put(TreeMap.java:560)
at java.util.TreeSet.add(TreeSet.java:255)
at org.wdh.test.Demo02.main(Demo02.java:14)


因为TreeSet要求,第一个添加到集合中的数据就是以后要添加的数据,第一个是int,再次添加的数据类型一定是int类型;



class Demo02 {


public static void main(String[] args) {

Set set = new TreeSet();

Person p = new Person(1,"张三","123");

set.add(p);

Iterator iterator = set.iterator();
while(iterator.hasNext()){
Object value = iterator.next();
System.out.println(value);
}

}
}


这时候还会报错,一定要在实体类里实现Comparable 接口,实现CompareTo()方法




你可能感兴趣的:(总结)