今天是来到天亮的第21天,今天主要讲了Map,泛型。
Map:
Map用于保存具有映射关系的数据,因此Map集合里保存两组值。
1. 一组值用于保存key,一组值用于保存value
2. key~value之间存在单向一对一关系,通过指定key可以找到唯一的value值
3. key和value都可以是任何引用类型对象
4. 允许存在value为null,但是只允许存在一个key为null
- key无序不可重复
- 底层是哈希表
HashMap中key的hashCode值决定了<k,v>键值对组成的entry在哈希表中的存放位置。
HashMap中key通过equals()比较,确定是覆盖key对应的value值还是在链表中添加新的entry。
综合前两条,需要重写hashCode()和equals()方法。
TreeMap:
TreeMap是SortedMap接口的实现类,可以根据Key进行排序,HashMap没有这个功能。
不指定比较器默认按照key自然升序,指定比较器按照比较器排序
TreeMap需要key实现Comparable接口,排序主要看compareTo()方法。
泛型:
泛型是指所操作的数据类型被指定为一个参数,在用到的时候再指定具体的类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。
好处:
1. 泛型能更早的发现错误,如类型转换错误
2. 使用泛型,那么在编译期将会发现很多之前要在运行期发现的问题
3. 代码量往往会少一些、运维成本减少
4. 抽象层次上更加面向对象