ArrayList
ArrayList的底层数据结构是动态数组,他是先确定ArrayList的容量,若当前容量不足以容纳当前的元素个数时,然后通过Arrays.copyOf()重新创建一个数组,将原来的数组copy进去,设置新的容量,然后赋值给elementData。
适合 查找或者遍历,如果有大量的插入删除操作尽量避免使用它。
LinkedList
ListedList基于双端链表,添加/删除元素只会影响周围的两个节点,开销很低;只能顺序遍历,无法按照索引获得元素,因此查询效率不高;没有固定容量,不需要扩容;需要更多的内存, 每个节点中需要多存储前后节点的信息,占用空间更多些。
怎样将一个数组转成List,有什么方法?
①数组转list,可以使用Arrays.asList(数组)
②List转数组,使用list.toArray()
HashSet、TreeSet、LinkedHashSet区别?
可以从集合的使用场合回答面试官
①.需要速度快的集合,使用HashSet
②.需要集合有排序功能,使用TreeSet
③.需要按照插入的顺序存储集合,使用LinkedHashSet
HashMap和Hashtable的区别:
1、hashMap不是线程安全的,而hashtable是线程安全的
2、hashMap允许空的值和空的值,而hashtable则不允许。
3、hashMap的性能要优于hashtable.