1.Collection、Set和List的区别?
Collection对象之间没有指定的顺序,允许有重复元素和多个null元素对象;它是Set和List接口的父类,是一种最通用型的集合接口;
Set各个元素对象之间没有指定的顺序,不允许有重复元素,最多允许有一个null元素对象;
List各个元素对象之间有指定的顺序,允许重复元素和多个null元素对象;
2.LinkedList,ArrayList,Vector,Stack,Queue区别?NodeList区别?
1)LinkedList链式访问,以指针相连,适合于在链表中间需要频繁进行插入和删除操作。
2)ArrayList类似数组的形式,按照序号存储,随机访问速度非常快。
3)Vector向量按照各元素序号存储,数组大小可以动态增长,对于大容量数据存储效率较高。
4)Stack堆栈,先进后出的数组。
3.ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?
Vector和HashTable是线程同步的(synchronized)。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。
4.什么时候使用Hashtable,什么时候使用HashMap
a.HashMap不是线程安全的;HashTable是线程安全的,其线程安全是通过Sychronize实现。
b.由于上述原因,HashMap效率高于HashTable。
c.HashMap的键可以为null,HashTable不可以。
d.多线程环境下,通常也不是用HashTable,因为效率低。HashMap配合Collections工具类使用实现线程安全。同时还有ConcurrentHashMap可以选择,该类的线程安全是通过Lock的方式实现的,所以效率高于Hashtable。
同时如果有多个线程访问HashMap,Collections.synchronizedMap()可以代替,总的来说HashMap更灵活。
5.什么是Iterator
一些集合类提供了内容遍历的功能,通过java.util.Iterator接口。这些接口允许遍历对象的集合。依次操作每个元素对象。当使用 Iterators时,在获得Iterator的时候包含一个集合。通常在遍历一个Iterator的时候不建议修改集合。
6.Iterator与ListIterator有什么区别?
Iterator:只能正向遍历集合,适用于获取移除元素。
ListIerator:继承Iterator,可以双向列表的遍历,同样支持元素的修改。