java基础面试题(集合)

来源:互联网 发布:若知我不降明 编辑:程序博客网 时间:2024/05/21 11:25

1.java集合类提供的框架基本接口类有哪些?

Collection:代表一组对象,每一个对象都是它的子元素
1. list :有序,可包含重复元素,取值顺序是’早进晚出’,也就是最先存的值最后才取出来.
2. set :无序,不可包含重复元素
3. map : key不能重复,取值顺序是’早进早出’,也就是最先存的值,最早被取出

2.为什么集合类没有实现cloning 和Serializable?

因为Cloning 跟 Serializablie 都是跟具体实现相关的,由此,应该让集合的具体实现类来决定被克隆还是被序列化

3.Iterator 跟 listlterator的区别是什么?

  • listInterator实现了Interator,listIterator实现了一下别的功能,比如增加,替换,获取前一个元素的索引,等等
  • Interator是用来遍历set 跟 map的
  • listIterator是遍历list集合的

4.介绍HashCode跟equals

  • equals()相等的两个对象,hashcode()一定相等,equals()不相等的两个对象,却并不能证明他们的hashcode()不相等。换句话说,equals()方法不相等的两个对象,hashCode()有可能相等。(我的理解是由于哈希码在生成的时候产生冲突造成的)

hashcode()方法是本地方法,返回的是对象的地址值,而object类中的equals()方法比较的也是两个对象的地址值,如果equals()相等,说明两个对象地址值也相等,当然hashcode() 也就相等了;

5.equals 跟 hashcode方法的重要体现在哪?

java中的HashMap使用了equals 跟 hashcode用来确定键值对的索引,当然,取值的时候也会使用,如果没有正确的实现了这俩个方法,那么会出现俩个不同键出现hashcode相等的情况,当然,这俩个方法也用来发现重复元素,所以,这俩个方法的实现跟hashMap的精确性是有很大关系的

6.HashMap跟Hashtable的区别?

HashMap跟Hashtable都实现了map的接口,它们有很多相同点,当然也有不同点,不同点如下,

  • HashMap允许键或值出现null的情况,当然,如果键是null,那么值只能用迭代器取出来
  • Hashtable是不允许键或值出现value的,
  • Hashtable是同步的,HashMap不是

所以,Hashtable适合多线程环境,而HashMap适合单线程环境,

7.ArrayList 跟 LinkList的区别?

  • 它们都实现了List的接口(共同点)
    (不同点)
  • ArrayList的底层是使用数组,LinkList的底层是以(链表结构)元素列表的形式存的值
  • ArrayList的查询快,因为List使用角标查询,
  • LinkList的增删改快,LinkList增删改不需要重新计算集合的大小,

8.comparable跟comparator的区别

  • comparable只提供了一个方法,它可以给俩个对象排序,具体的来说,会返回负数,0,正数, 意思是 第一个参数小于第二个, 等于第二个 , 大于第二个
  • comparator提供了俩个方法,包含了compare的方法,还有一个equals方法,当compare方法返回的跟equals比较的方法一致,才会返回返回true;

9.HashSet 和 TreeSet的区别是什么?

  • TreeSet的数据是有序的,HashSet的数据是无序的
  • TreeSet的数据不能为null,HashSet的数据可以为null
  • HashSet放入的对象需要实现HashCode方法,因为HashSet是用哈希码值来判断值是否重复的,但是HashSet可以放俩个相同对象的不同实例
原创粉丝点击