Java面试题三–集合框架
-
ArrayList和Vector的区别
答:ArrayList的底层是由数组构建的,所以ArrayList具有的特点就是遍历速度快,也适合随机查找,但是不适合插入和删除。Vector和List一样,也是通过数组实现的,不过Vector支持线程同步,也就是说一个时间只有一个线程可以访问Vector,这样就可以避免多线程而引发的不一致性,但是实现同步也需要一些代价,会牺牲一些效率,所以它就要比ArrayList访问的慢。
关于ArrayList,LinkesList,Vector详解连接: https://www.cnblogs.com/williamjie/p/11158523.html -
HashMap和Hashtable的区别?
答:这个很详细,建议看一下,链接: https://www.cnblogs.com/williamjie/p/9099141.html
1.他们继承的父类是不同的,Hashtable继承自Dictionary类,而HashMap继承自AbstracMap类。但二者都实现了Map接口。
2.它们的线程安全不同,Hashtable是线程安全的,因为它的每个方法中都加入了Synchronize,HashMap是线程不安全的,因为HashMap在哈希冲突的时候采用链表的方式来解决的,这种方式会存在安全隐患。
3.Hashtable中,key和value都不允许出现null值,HashMap中,null可以作为键,这样的键只有一个,可以多个null值。 -
List和Map的区别?
答:1.List和Set是存储单列数据的集合,Map是存储键和值这样的双列数据的集合。2.Linst中存储的数据是有顺序的,并且允许重复;Map中存储的数据是无序的,其键不能重复,但是值可以重复,元素在集合中的位置是由元素的hashcode决定的,位置是固定的。 -
List,Set,Map是否继承自Collection接口?
答:List,Set是,Map不是。
链接:https://blog.csdn.net/htofly/article/details/8622784 -
List,Map,Set三个接口,存取元素时,各有什么特点?
答:List表示有先后的顺序集合,存元素采用add()方法,每次加入对象按照先来后到的顺序排序,也可以用add(int index, Object)指定位置存放。在取元素时有两种方法:1.Iterator接口(迭代器)去取所有元素,2. 调用get(index i)来明确说明取第几个。
Set表示不允许有重复元素,存元素时,采用add()方法,add方法中有一个返回值,使用equals进行对比,如果为ture,则不会加入该元素,取元素的方法采用Iterator取得所有的元素。 -
说出ArrayList,Vector,LinkedList的存储性能和特性
答:ArrayList和Vector都时使用数组方式存储数据,LinkedList采用的是双链表进行数据操作,因为Vectory是线程安全的,所以性能上币会低一些,要比ArrayList低,因为底层实现不同,LinkedList采用链表会在数据的增加删除操作上,效率非常高,但是在遍历数据上,要比底层以数组来写的ArrayList低一些。
数据存储上,Vectory默认增长是原来的一倍,ArrayList是原来的一半。 -
Collection和Collections的区别?
答:Collection是集合类的一个顶级接口,其直接继承接口有List与Set,而Collection则是集合类的一个工具类/帮助类,其中提供了一系列的静态方法,用于对集合中元素进行排序,搜索以及线程安全等各种操作。 -
如何让去掉一个Vector集合中重复的元素?
答:两种方法:1.通过Vector.contains()方法判断是否包含该元素,如果没有包含就添加到新的集合当中,适用于数据较小的情况下。
2.采用HashSet set = new HashSet(Vector), 因为set集合是不允许有重复元素出现的。 -
Set里的元素是不能重复的,那么用什么方法区分重复与否呢?是用==还是equals()? 它们有何区别?
答: Set的Api中写的是equals,所以我认为应该是采用equals()来区分的。= =是判断两者是否是同一对象,equals()是对于对象的使用,根据API可知,set中使用equals进行对比的,只用对比是否引用的相等。 -
你知道的集合类都有哪些,主要方法?
答:集合涉及到的接口有:List,Set,Map。其中涉及到的类有,ArrayList,LinkedList,Vector,Stack,HashMap,HashMap,主要方法有:迭代器方法iterator(),他们各自也有一些添加元素和删除的方法,例如List接口实现类中add()方法。
链接:https://www.cnblogs.com/guweiwei/p/6638022.html