java集合面试题!!!重点!重点!重点!

java集合面试题!!!重点!重点!重点!List:List继承Collection,List可以出现重复元素,可以插入多个null元素, 有序。

ArrayList和LinkedList的区别:ArrayList的优点:get和set调用时间快,ArrayList的缺点:新项的插入和现有项的删除时间比较慢,LinkedList的优点::新项的插入和现有项的删除时间比较快,LinkedList的缺点:get和set调用时间慢。

Set:Set继承Collection,Set不允许出现重复元素,只可以有一个null元素,无序。

HashSet,TreeSet和LinkedHashSet的区别:1,需要速度快的集合,使用HashSet。

                                                                      2,需要集合有排序功能,使用TreeSet。

                                                                      3,需要按照插入的顺序存储集合,使用LinkedHashSet。

 

Map:Map不是Collection的子接口,键值对的存在,键必须唯一,但是值必须重复,键只可以允许一个null,值可以允许有多个null,无序。

HashMap,TreeMap和LinkedHashMap的区别:1,在Map中插入,删除和定位元素,HashMap是最好的选择。

                                                                           2,需要集合有排序功能,使用TreeMap更好。

                                                                           3,需要按照插入的顺序存储集合,使用LinkedHashMap。

Collection:Collection接口继承Iterable接口,Collection中常见的方法:size():返回集合中的项数,isEmpty():判断集合中是否为空,contains(Object):判断集合中是否包含某项,clear():,add(E):从集合中添加某项,remove(Object):从集合中删除某项,iterator():遍历集合。

Iterable:Iterable接口的两点,1,实现Iterable接口的类可以拥有增强for循环,2,实现Iterable接口的集合类必须提供一个名为Iterator()的方法,该方法的返回值为Iterator,Iterator()中提供的方法:hasNext():是否存在下一项,next():获取下一项,remove():该方法可以删除由next()最新返回的项(注意:此后不能调用remove,直到对next()再一次调用以后)。

Collection接口的remove()方法和Iterator接口的remove()方法区别:1,性能方面:Collection的remove方法必须首先找出要被删除的项,找到该项的位置采用的是单链表结构查询,单链表查询效率比较低,需要集合中一个一个遍历蔡可以找到该对象。Iterator的remove方法结合next()方法使用,比如集合中每隔一项删除一项,Iterator的remove()效率更高。2,容错方面:在使用Iterator遍历时,如果使用Collection的remove则会报异常,会出现ConcurerentMException,因为集合中对象的个数会改变而Iterator内部对象的个数不会,不一致则会出现该异常。在使用Iterator遍历时,不会报错,因为Iterator内部的对象个数和原来集合中对象的个数会保持一致。