集合之间的区别

一,Iterable接口(集合的最顶层

   1.实现iterable接口的类可以拥有增强for循环.

   2.实现iterable接口的集合类必须提供一个名为iterator()的方法,该方法的返回值为iterator.

 iterator方法

    remove():该方法可以删除由next()最新返回的项

    hasNext():是否存在下一项

    nex():获取下一项

二.Collection(继承Iterable接口)

     collection接口下java.util包下常用的方法列表:

      size():返回集合中的项数

      isEmpty():判断集合中是否为空

      contains(Object):判断集合中是否包含某项

      add(E):从集合中添加某项

      remove(Object):从集合中删除某项

      iterator():遍历集合

      clear():

Collection有三个子类型:

1.List (特点:可以添加重复的元素,有顺序)
   List也有两个子类:

     (1).ArrayList:  

             优点:get和set调用花费常数时间

             缺点:新项的插入和现有项的删除代码代价昂贵,除非是在末端进行

     (2).LinkedList:

            优点:新项的插入和现有的项的删除开销小

            缺点:对get和调用昂贵

2.Set(特点:不保存重复的元素,没有顺序)

     Set也有两个子类:

         (1)HashSet:速度最快,没有明显的顺序保存元素,集合元素可以是null,但只能放入一个null

         (2)TreeSet:按照比较结果的升序保存对象

         (3)LinkedHashSet:按照被添加的顺序保存对象

3.Queue(特点:先进先出)

Queue、Message、Looper、Handler之间的关系

在这里插入图片描述

容易碰见有关java集合的面试题:

1,ArrayList和LinkList的区别?

ArrayList(数组结构):

        优点:get和set调用花费常数时间,也就是查询的速度快;

        缺点:新项的插入和现有项的删除代价昂贵,也就是添加删除的速度慢

LinkedList(链表结构):

        优点:新项的插入和和现有项的删除开销很小,即添加和删除的速度快

        缺点:对get和set的调用花费昂贵,不适合做查询

2,Collection接口的remove()方法和Iterator接口的remove()方法区别?

①性能方面

    Collection的remove方法必须首先找出要被删除的项,找到该项的位置采用的是单链表结构查询,单链表查询效率比较低,需要从集合中一个一个遍历才能找到该对象;

    Iterator的remove方法结合next()方法使用,比如集合中每隔一项删除一项,Iterator的remove()效率更高

②容错方面

    在使用Iterator遍历时,如果使用Collection的remove则会报异常,会出现ConcurrentModificationException,因为集合中对象的个数会改变而Iterator 内部对象的个数不会,不一致则会出现该异常

    在使用Iterator遍历时,不会报错,因为iterator内部的对象个数和原来集合中对象的个数会保持一致

3,怎样将一个数组转成List,有什么方法?

数组转list,可以使用Arrays.asList(数组),例如

集合之间的区别_第1张图片

 

List转数组,使用list.toArray(),例如

集合之间的区别_第2张图片

 

5,HashSet、TreeSet、LinkedHashSet区别?

可以从集合的使用场合回答面试官

①.在Map中插入、删除和定位元素,HashMap是最好的选择

②.需要集合有排序功能,使用TreeMap更好

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

 

6,HashMap、TreeMap、linkedHashMap区别?

可以从集合的使用场合回答面试官

①.在Map中插入、删除和定位元素,HashMap是最好的选择

②.需要集合有排序功能,使用TreeMap更好

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

你可能感兴趣的:(集合之间的区别)