关于map:使用TreeMap时需要注意的问题

9次阅读

共计 757 个字符,预计需要花费 2 分钟才能阅读完成。

什么是 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 的类型是什么。

正文完
 0