标签:Java面试、集合类、异常处理 2017/05/09 09:36
三.Java集合类
10.Java集合类框架的基本接口都有哪些
Java集合类里面最基本的接口有:
Collection:代表一组对象,每一个对象都有它的子元素;
set:不包含重复元素的collection;
List:可以包含重复元素的有顺序的collection;
Map:包含Key和Value的,key不能重复。
11.迭代器
Iterator接口提供了很多对集合元素迭代的方法,每个集合类都包含了可以返回迭代器实例的迭代方法,迭代器可以在迭代的过程中删除底层集合的元素。
Iterator与ListIterator的区别:
Iterator可以遍历List和Set集合,但是ListIterator只能遍历list
Iterator只能前向遍历,但是ListIterator可以双向遍历
ListIterator实现了Iterator接口,并且包含了其他功能:增加元素,替换元素,获取前后索引等。
12.Java中HashMap的工作原理
Java中的HashMap是以键值对(Key-Value)的方式进行存储,HashMap需要一个Hash函数,
一个HashCode,一个是equals函数,当调用put()方法时,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上,如果key的hash值已经存在了,value会被更新。
一般需要重写HashCode方法和equals方法。
HashMap与HashTable区别联系:
HashMap允许键和值都为null,而HashTable不允许这样;
hashtable是同步的,而HashMap不是,HashMap更适合于单线程环境。
13.数组(Array)和列表(ArrayList)、LinkedList的区别?
前者可以包含基本类型和对象类型,ArrayList只能包含对象类型;
前者大小是固定的,而后者是变化的,
ArrayList提供了更多的方法和特性,如:addAll().removeAll();iterator()
ArrayList基于索引的数据接口,它的底层是数组实现,可以0(1)时间复杂度进行随机访问;而Linkedlist是基于元素列表的形式存储的数据,时间复杂度为0(n)表示,LinkedList增减删查操作更快,但是其LinkedList更占内存,因为LinkedList为每一个节点存储了两个引用(前后两个元素)。
O(大O符号)就是衡量数组元素增加带来的复杂度,比如有序数组(TreeSet)查找一个元素的复杂度是O(log n),但是要插入一个新元素的复杂度是0(n),而无序数组(HashSet)的查找一元素复杂度O(n),插入一个远胜于复杂度是O(1)。
14. Comparable和Comparator接口时干什么的?列出他们的区别
Java提供了含有compareTo方法的comparable接口,这个方法可以给两个对象排序,返回负数,0,证书分别代表小于,等于,大于已经存在的对象。
同理,Java也提供了一个包含compare()和equals()两个函数的Comparator接口,compare()与compareTo()方法相似,equals()方法需要一个对象作为参数,它用来决定输入参数是否和 comparator 相等。只有当输入参数也是一个 comparator 并且输入参数和当前 comparator 的排序结果是相同的时候,这个方法才返回 true。
15.enumeration接口与Iterator接口的区别在哪?
Enumeration接口比Iterator速率的2倍,同时占用更少的空间,但是Iterator的线程比Enumeration安全,因为其他线程不能修改正在被Iterator遍历的元素,同时他也允许删除底层集合中的元素,这对Enumeration是不能的。
额外福利:jvm内存分区四:异常处理
16.Java中的两种异常类型是什么?他们有什么区别?
受检查和不受检查的异常,受检查的异常必须使用throws抛出异常,还可以再分为Exception用于用户可以 捕获的异常程序和Error不可捕获的异常。
异常处理的时候 ,无论是否抛出异常,finally代码总会被执行,finally块主要用来释放资源。
异常处理之后,Exception对象会在下一个垃圾回收过程中被回收掉。
finalized()方法是Object类的一个protect方法,是在对象被垃圾回收之前由JVM调用的。
请尊重原创,转载请联系,前行路上的你并不孤单,小蚁君每天都会陪着你......
网友评论