玩了一下Set集合,都知道Set集合是无序的而且不可重复,
但是,Set有一个子类却有序,这个子类就是TreeSet,而且会自动排序,
但是,添加到TreeSet中的数据类型必须是相同的:
下面是我的代码:
class Demo02 {
public static void main(String[] args) {
Set<Object> set = new TreeSet<Object>();
set.add(1);
set.add("a");
set.add(2);
Iterator<Object> 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<Person> set = new TreeSet<Person>();
Person p = new Person(1,"张三","123");
set.add(p);
Iterator<Person> iterator = set.iterator();
while(iterator.hasNext()){
Object value = iterator.next();
System.out.println(value);
}
}
}
这时候还会报错,一定要在实体类里实现Comparable 接口,实现CompareTo()方法