前言:

数据结构的分类
如果完全不懂数据结构,很难写出优秀的代码,有缺陷的底层数据结构容易导致系统风险高,可扩展性差,所以需要认真的对待数据结构进行设计和评审。

Java中通过集合框架封装了数据结构:集合框架通常包含这三点:

  • 接口
  • 实现
  • 算法
    集合框架的优点:
  • 减少程序编程工作
  • 增加程序编程速度和质量
  • 允许不相关API之间的交互
  • 减少和学习新的API的工作
  • 减少设计新的api工作
  • 培养软件的可重用性

数据结构和集合框架(接口&实现&聚合操作&算法)

  • 一、线性结构:
    0至1个直接前继和直接后继。当线性结构非空时候,有唯一的首元素和尾元素,除两者外,所有的元素都有唯一的直接前继和直接后继。线性结构包括顺序表,链表,栈表,队列等,其中栈和队列是访问受限的结构。栈是后进先出,LIFO,last-in,first-out,队列是先进先出FIFO.firtst-in,first-out
  • 二、树结构:
    0至1个直接前继和0至n个直接后继(n大于或等于2)。树是一种非常重要的有层次的非线性数据结构,像自然界的树一样,由于树结构比较稳定和均衡,在计算机领域中得到广泛使用。
  • 三、图结构:
    0至n个直接前继和直接后继(n大于或等于2)图结构包括简单图,多重图,有向图,和无向图等
  • 四、哈希结构:
    没有直接前继和直接后继,哈希结构通过某种特定的哈希函数将索引和存储的值关联起来,是一种查找效率非常快的数据结构。

一、线性结构:

  • 1.1-顺序表
  • 1.2-链表
  • 1.3-栈表
  • 1.4-队列
  • 1.4.1阻塞队列
    BlockingQueue 通常用于一个线程生产对象,而另外一个线程消费这些对象的场景。下图是
    数据结构和集合框架(接口&实现&聚合操作&算法)
    对这个原理的阐述:
    一个线程往里边放,另外一个线程从里边取的一个 BlockingQueue 。
    一个线程将会持续生产新对象并将其插入到队列之中,直到队列达到它所能容纳的临界点。
    也就是说,它是有限的。如果该阻塞队列到达了其临界点,负责生产的线程将会在往里边插
    入新对象时发生阻塞。它会一直处于阻塞之中,直到负责消费的线程从队列中拿走一个对象。
    负责消费的线程将会一直从该阻塞队列中拿出对象。如果消费线程尝试去从一个空的队列中
    提取对象的话,这个消费线程将会处于阻塞之中,直到一个生产线程把一个对象丢进队列。

相关文章:

  • 2021-09-22
  • 2021-04-20
  • 2021-12-17
  • 2021-05-16
  • 2021-11-19
  • 2021-11-01
  • 2022-01-20
  • 2021-12-04
猜你喜欢
  • 2021-09-23
  • 2022-01-12
  • 2021-06-25
  • 2021-07-14
  • 2021-06-21
  • 2021-04-01
  • 2021-05-25
相关资源
相似解决方案