zoukankan      html  css  js  c++  java
  • java集合详解

    这里我们分析Collection和Map
    大图查看详情

    javaCollection的分析

    Collection是在java.util里面

    Java队列

    集合里面是一定是存放对象的,不能存放基本数据类型,像是int,也是先转换成Integer然后在放在集合中。

    List

    • List是一个接口,而下面有ArrayList和LinkList两个实现类,关于Array和Linkd的区别,详见数据结构。
    • List是有顺序的!
    • Vector(同步) 非常类似ArrayList,但是Vector是同步的

    Set

    • Set也是一个接口,下面有HashSet和TreeSet两个实现类
    • HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。 里面的对象可能会被打乱,但是效率更高。
    • TreeSet: TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。 保证对象的有序性
    • Set里面没有重复数据 这样可以去重
      | 重要方法 | 作用 |
      | ----------- | ------------------------------------------------------------ |
      | iterator( ) | 主要用于递归集合,返回一个Iterator()对象,利用Iterator()去接收 |

    《后期添加》注意:这个Iterator是Collection下面的 。

    Deque && Queue

    • 其实Deque是Queue的一个接口,是父子关系

    • 注意他的子接口Deque下面有两个实现类ArrayDeque...

    • Queue是一个普通队列,详情见数据结构

    • Deque是Queue的子接口,他是一个双端队列,可以支持FIFO(First Input First Output)和LIFO原则。

    队列基础

    • BlockingQueue阻塞队列:当添加队列的时候,可以去设置等待时间。即当队列满的时候,可以等待,超过等待时间返回false。取队列的时候也可以等待。
    • ConcurrentLinkedQueue非阻塞队列,添加和取队列的时候不去等待。
    • 队列原则
      • 先进先出(FIFO):先插入的队列的元素也最先出队列,类似于排队的功能。从某种程度上来说这种队列也体现了一种公平性。
      • 后进先出(LIFO):后插入队列的元素最先出队列,这种队列优先处理最近发生的事件。  

    Tips: 非阻塞队列比阻塞队列效率要好,但是确实不安全的


    非阻塞队列

    ConcurrentLinkedQueue()

    方法 作用
    offer 将Object添加到队列的尾部
    poll 从队列头取Object并且将其在队列中删除
    peek 从队列头取Object并且不将其在队列中删除

    阻塞队列

    BlockingQueue(Size)

    常用队列

    • ArrayBlockingQueue 数组型队列,必须要指定size

    • linkedBlockingQueue 链表型无界队列,可以指定size

    方法 作用
    offer() 将Object添加到队列的尾部<非阻塞式>
    offer(Object,time,timeUtil) 将Object添加到队列的尾部<阻塞式>,设定队满的时候等待时间
    poll 从队列头取Object并且将其在队列中删除<非阻塞式>
    poll(Object,time,timeUtil) 队列头取Object并且将其在队列中删除<阻塞式>,设定队空的时候等待时间
    peek 从队列头取Object并且不将其在队列中删除

    这里要注意: add()方法和offer方法的区别,add方法在队列满的情况下会抛出一个异常。而offer并不会。|

  • 相关阅读:
    数据结构——快速排序
    设计模式——代理模式(静态代理和JDK、CGLib动态代理)
    Java多线程系列——信号量:Semaphore
    Java多线程系列——线程阻塞工具类LockSupport
    Java多线程系列——过期的suspend()挂起、resume()继续执行线程
    Java多线程系列——深入重入锁ReentrantLock
    JVM——深入分析对象的内存布局
    【Git】The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
    【linux】CentOS: Sudo: unable to initialize policy plugin
    【Git】.git/FETCH_HEAD: Permission denied 的解决方法
  • 原文地址:https://www.cnblogs.com/adroitwolf/p/14309811.html
Copyright © 2011-2022 走看看