说一下集合的体系?
单列集合:
双列集合:
Collection 和 Collections的区别?
Collection:
是java.uitl 下的接口,他是各种集合的父接口,继承于它的接口主要有set 和list;
Conllecitons:
是个java.util下的类,是针对集合的工具类,提供一系列静态方法对各种集合的搜索,排序,线程安全化等操作。
List a=new ArrayList() 和 ArrayList a =new ArrayList()的区别?
List list = new ArrayList();
这句创建了一个 ArrayList 的对象后把上溯到了 List。此时它是一个List对象了,有些ArrayList 有但是 List 没有的属性和方法,它就不能再用了。ArrayList list=new ArrayList();
创建一对象则保留了ArrayList 的所有属性。所以需要用到 ArrayList 独有的方法的时候不能用前者。
实例代码如下:
1List list = new ArrayList();
2ArrayList arrayList = new ArrayList();
3list.trimToSize(); //错误,没有该方法。
4arrayList.trimToSize(); //ArrayList里有该方法。
Enumeration和iterator接口的区别?
-
Enumeration接口作用与iterator接口相似,但只提供了遍历vector和HashTable类型集合元素的功能,不支持元素的移除操作
-
Enumeration速度是iterator的2倍,同时占用更少的内存。但是,iterator远比enumeration安全,因为其他线程不能够修改正在被iterator遍历的集合里面的对象。同时,iterator允许调用者删除底层集合里面的元素
ArrayList集合加入1万条数据,应该怎么提高效率?
直接初始化ArrayList集合的初始化容量为1万。
但达到100万以上乃至1000万以上时,初始化容量方法效率会下降
说一下ArrayList和Vector的扩容?
ArrayList和Vector都有一个初始的容量大小。
ArrayList 是一个可改变大小的数组,当更多的元素加入到ArrayList中时,其大小将会动态地增长。
内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组.
Vector和ArrayList在更多元素添加进来时会请求更大的空间。
Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%.(Vector默认增加原来的一倍,ArrayList默认增加原来的0.5倍)