61、List和 Map区别?
一个是存储单列数据的集合,另一个是存储键和值的双列数据的集合,List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。
1.List有重复值,Map没有重复key,但可以有重复值
2.List有序,Map不一定有序
3.List只能存单列值,Map可以存双列值
62、List, Set, Map是否继承自Collection接口?
List、Set是,Map不是
63、List、Map、Set三个接口,存取元素时,各有什么特点?
List使用get(index)取值,也可以使用Iterator、toArray取值
Set只能通过Iterator、toArray取值
Map取值使用get(key)取值,也可以使用keySet取键值集合,也可使用values取值集合,entrySet取全部键值对映射。
64、说出ArrayList,Vector, LinkedList的存储性能和特性
1. ArrayList和Vector使用数组存储元素;LinkedList使用链表存储元素
2. ArrayList和Vector插入删除数据时,需要搬运数据,效率较差;LinkedList使用链表,不需要搬运数据,效率高
3. ArrayList和Vectory查询时,按数组下标查询,不需要遍历,效率高;LinkedList需要遍历,查询效率底
4. ArrayList和Vector的区别见59条
65、去掉一个Vector集合中重复的元素
1. 自行遍历,用另外一个Vector来判断是否有重复
2. 用Set(TreeSet或HashSet)来去重
3. 用Apache的CollectionUtil工具类去重
Vector newVector = new Vector();
for (int i = 0; i < vector.size(); i++) {
Object obj = vector.get(i);
if (!newVector.contains(obj))
newVector.add(obj);
}
还有一种简单的方式,HashSet set = new HashSet(vector);