头图

使用TreeMap时需要注意的问题

quincy

什么是TreeMap

treemap是java.util.Map的一个实现类,TreeMap实现SortedMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。如果使用排序的映射,建议使用TreeMap。在使用TreeMap时,key必须实现Comparable接口或者在构造TreeMap传入自定义的Comparator,否则会在运行时抛出java.lang.ClassCastException类型的异常。

关于java.lang.ClassCastException异常

通常遇到这个异常的原因是强制类型转换时报错,在强制类型转换时,需要注意,父类引用指向的对象的类型是子类的时候才可以进行强制类型转换,如果父类引用指向的对象的类型不是子类的时候将产生java.lang.ClassCastException异常。

Animal a1 = new Dog();  // 1
Animal a2 = new Cat();  // 2
 
Dog d1 = (Dog)a1;         //3
Dog d2 = (Dog)a2;        //4

在这个demo中,第三行可以进行强转,但是第四行会抛出java.lang.ClassCastException异常,因为a2是animal,但是具体实现类型是cat,不能直接强转为dog类型。
遇到这样的异常的时候如何解决呢?如果你知道要访问的的对象的具体类型,直接转换成该类型即可。如果不能确定类型可以通过下面的两种方式进行处理(假设对象为o):
1、通过o.getClass().getName()得到具体的类型,可以通过输出语句输出这个类型,然后根据类型进行进行具体的处理。
2、通过if(o instanceof 类型)的语句来判断o的类型是什么。

阅读 256

spring-boot

4 声望
1 粉丝
0 条评论
你知道吗?

spring-boot

4 声望
1 粉丝
文章目录
宣传栏