JAVA SE 基础复习-核心库-Collection---java.util

前言

  花了点时间对照着JDK1.6树结构 ,做了下面这张图,以后复习方便多了。

  

  图中椭圆形的是接口,棕色的长方形是抽象类,蓝色的长方形是普通类;红色线条是实现的接口。Ab是Abstract的简写。

  1、Collection接口有三个子接口 Set,List,Queue。

  2、为什么不直接实现Iterator,而是去实现Iterable?

      JDK文档中Iterable只有一个方法就是iterator(),这个方法返回一个Iterator对象。由于Iterator进行遍历的时候会记录位置,假如直接取实现Iterator接口的话,遍历的起点不会每次都是开头,无法达到目的,所以需要返回一个Iterator对象。

      所有的集合类都可以通过这个方法实现遍历。

  3、Set用来表示一个不包含重复元素的集合,SortedSet进一步提供元素有序的Set,通过自然排序或者建立Set时提供的Comparator进行排序,Iterator遍历时采用升序。

NavigableSet 为给定搜索目标报告最接近匹配项的导航方法。

  4、ArrayList与LinkedList有什么区别?

    ArrayList基于动态数组的数据结构,在随机查找功能上优于LinkedList。

    LinkedList基于链表的数据结构,在增加和删除功能上性能更好。

    一般的使用的时候,都是用List指向一个具体对象。

  5、ArrayList和Vector有什么区别?

    ArrayList和Vector都是用数组存储对象的,且实现了List接口,从提供的方法上看很类似,但是也有区别。

    首先 ArrayList的方法不是线程安全的,而Vector的所有方法是线程安全的,都使用了synchronized关键字。

    其次 在数组增长方式上不同,当数据量达到默认的临界量后如0.75,这时ArrayList就会增加50%的大小,而Vector 增加一倍的空间。

    由于同步会引起很大的系统开销,一般情况下都是使用ArrayList,在需要线程安全的时候使用Vector。

  5、Stack的使用

    push压栈  pop弹出栈  peek查看栈顶对象而不移出  empty是否为空。

  6、Queue的使用

    提供了两种添加移出查看的方法

      add    remove   element   假如操作失败会抛出异常

      offer   poll         peek        一般失败会返回false  或者null

      具体查看JDK,实现类ArrayDeque和LinkedList

  7、Deque  "double ended queue"   双端队列,读作"deck"。

 第一个元素(头部)最后一个元素(尾部)
 抛出异常特殊值抛出异常特殊值
插入addFirst(e)offerFirst(e)addLast(e)offerLast(e)
移除removeFirst()pollFirst()removeLast()pollLast()
检查getFirst()peekFirst()getLast()peekLast()

  补充面向对象的知识:

  1、上面的AbList和ArrayList等都实现了List接口,这样是可以的。

    这样做基于两点理由:1)历史的原因。

              2)即使以后AbList不再实现List,ArrayList仍然实现了List,方便使用。

     只要父类implements某一接口,子类完全继承也可以重新实现该接口;

    对于抽象类可以不去实现接口的方法,而是交由具体类去实现,如AbList就可以不去实现List中的方法。

  

转载于:https://www.cnblogs.com/maydow/p/4801440.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值