「这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战」 java中ArrayList能继承吗?
- 完全可以的,不过这个叫做实现接口,不是继承。你需要实现List里面的所有方法。如果你写的好的话相当于自己建了一个容器类。
阐述ArrayList、Vector、LinkedList的存储性能和特性?
- ArrayList和Vector都是使用数组方式存储数据的,都允许直接索引元素,但是插入元素就要移动数组元素,所以索引数据比插入数据慢;且Vector方法添加了synchronized修饰,所以他是线程安全的,但性能较差。
- LinkedList使用双向链表是实现存储(将内存中零散的内存单元关联到一块,提高内存的利用率),按序号索引数据需要向前或者向后遍历,插入数据时只需记录本项的前后项即可,所以插入速度快。
- ArrayList和LinkedList都是线程不安全的。如果遇到多个线程同时操作一个容器,则可以通过Collections中的synchronizedList方法将其转换成线程安全的容器后使用。
请说明Collection 和 Collections的区别?
- Collection是集合类的上级接口,继承于他的接口有List,Set。
- Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
请你说明一下TreeMap的底层实现?
-
TreeMap是一个有序的key-value集合。根据其键的自然排序或者提供的comparator进行排序。
-
特性:
- 根节点永远是黑色
- 每个节点不是黑色就是红色
- 所有叶节点都是null,并且是黑色的
- 每个红色节点的两个子节点都是黑色的(从每个叶子到根的路径上不会有两个连续的红色节点)
- 从任一节点到其子树中每个叶子节点的路径都包含相同数量的黑色节点