集合

来源:互联网 发布:数据分析系统 编辑:程序博客网 时间:2024/06/01 08:15

1.Collection和Collections的区别:

(1)、Collection是集合类的上级接口,继承与他的接口主要有Set 和List.

(2)、Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

2.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?他们有什么区别:

set里的元素是不能重复的,用iterator()方法来区分重复与否。
equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。

用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true

3.List,Set,Map是否继承自Collection接口?

Collection中存放的是一组各自独立的对象,而Map中存放的是“键——值”对象。 List和Set都是Collection的子接口,List是一个有序可重复列表,Set是一个无序重复集。

4.两个对象的值相同(x.equals(y)==true),但却可有不同的hash code,这句话对不对?


5.说出ArrayList,Vector,LinkedList的存储性能和特性:

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

6.HashMap和HashMap的区别:

 HashMap不是线程安全的


            hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。


 HashTable是线程安全的一个Collection。


HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

7.ArrayList和Vector的区别:

相同处:ArrayList和Vector底层都是用数组实现的

不同处:第一个:最明显的一个是Vector是线程安全的(通过实现synchronize方法)而ArrayList是线程不安全的

    第二个:ArrayList如果需要扩容新数组的长度是原来数组的1.5倍。而Vector是原来的两倍