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堆栈,先进后出的数组。
这些类的对比与选择:
如果涉及到堆栈队列等操作,应该考虑List中的stack,queue
对于需要快速插入删除元素,应该使用linkedlist
如果需要快速随机访问元素,应该选用arraylist
如果程序在单线程环境中,选用非同步类
如果在多线程中,选用同步类vector、stack和hashtable以及其子类。
几个面试常见问题:
ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?
Vector和HashTable是线程同步的(synchronized)。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。
讲解java集合的体系结构
A:List、Set、Map是这个集合体系中最主要的三个接口。
其中List和Set继承自Collection接口。
Set不允许元素重复。HashSet和TreeSet是两个主要的实现类。
List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。
Map也属于集合系统,但和Collection接口不同。Map是key对value的映射集合,其中key列就是一个集合。key不能重复,但是value可以重复。HashMap、TreeMap和Hashtable是三个主要的实现类。
SortedSet和SortedMap接口对元素按指定规则排序,SortedMap是对key列进行排序