zoukankan      html  css  js  c++  java
  • 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中的方法。

      

  • 相关阅读:
    Qt:The CDB Process Terminated!调试失败
    关于【error C3646: 未知重写说明符】的若干种可能性
    QT:圆角设置
    Qt修改图片的背景色及设置背景色为透明的方法
    index首页加载数据库数据方法
    jsp+jstl实现登录验证
    java 分页
    初始Ajax学习笔记
    python wechat
    python json dumps load 区别
  • 原文地址:https://www.cnblogs.com/maydow/p/4801440.html
Copyright © 2011-2022 走看看