1.java容器都有哪些?
主要分为两大类:Collection类 , Map类。
2.collection和collections有什么区别?
collection是集合层次结构的最根本的接口,定义了集合的基本方法。
collections是一个包装类,不能实例化,它包含了各种集合操作的静态多态方法。(collection集合框架的工具类)。
3.list,set,map之间的区别是什么?
list是有序集合,元素可重复,可为空。
set中的元素是无序,不可重复,只有一个空元素。SortedSet可排序,HashSet无序
map是一个接口,也是无序存储。(key,value)key无序且唯一的,value不要求无序,可重复。map可允许一个空键,多个空值。
4.HashMap和Hashtable有什么区别?
HashMap允许键值对都可以为null,而Hashtable不允许任何一个为null。
HashTable的方法是同步的,HashMap不能同步(线程非安全)。
(HashMap的Iterator是快速失败迭代器;Hashtable还使用了enumerator迭代器)
hash的计算方式不同:
HashMap为了得到元素的位置,首先需要根据元素的 Key计算出一个hash值。
Hashtable直接使用key对象的hashCode。
HashTable是继承自Dictionary类,而HashMap是继承自AbstractMap类(不过它们都同时实现了
map,Cloneable(可复制)、Serializable(可序列化)这三个接口。)
5.ArrayList和LinkedList的区别是什么?
ArrsyList需要开辟连续的内存空间。LinkedList不需要连续的内存空间。
ArrayList底层是数组存储,LinkedList底层是双循环链表存储。
ArrayList插入和删除元素,时间复杂度受位置影响。需要将插入或删除位后面的元素后移或前移一位。LinkedList插入和删除元素,时间复杂度不受位置影响,只需要更改插入或删除位的前后指针地址。(ArrayList增删慢,LinkedList增删快)。
ArrayList支持随机访问,可以快速查询。Linkedlist不支持高效随机访问,查询慢。