首页 > 其他分享 >数据结构之线性表、队列、栈

数据结构之线性表、队列、栈

时间:2022-10-09 00:47:06浏览次数:42  
标签:线性表 队列 ArrayList Queue 实现 线程 使用 数据结构 LinkedList

一、线性表

1. 两种实现方式

  1. ArrayList底层逻辑是使用数组进行实现的,不支持线程同步,非线程安全
  2. LinkedList底层逻辑是使用List实现的,不支持线程同步,非线程安全

2. 比较

ArrayList

  1. 查找方便,可以根据index进行精准定位
  2. 增删麻烦,可能会设计到元素的移动,以及扩容等

LinkedList

  1. 查找不方便,需要进行遍历;
  2. 增删简单,但是前提是需要找到对应的元素的位置

最后

  1. 究竟使用哪个,还是需要根据实际场景来。查找频率高,建议使用ArrayList;增删频率高,建议使用LinkedList

二、队列和栈

在日常使用的时候,定义一个变量,通常都是使用的接口,而具体的实现则是有不同的定义

    /**
     * 
     * 1. 使用接口Queue来定义一个变量
     * 2. 使用不同的数据结构来实现Queue
     */
    //使用LinkedList来实现Queue
    java.util.Queue<String> queue = new LinkedList<>();
    //使用PriorityQueue来实现Queue
    java.util.Queue<String> queue2 = new PriorityQueue<>();

1. 队列

queue 先进先出,可以使用LinkedList实现,当然还有其他的实现方式
public interface Queue<E> extends Collection<E>

2. 栈

stack 后进先出,可以使用ArrayList实现,当然也有其他的实现方式
public class Stack<E> extends Vector<E>
Vector 向量,类似于ArrayList,底层都是通过Array实现的,支持线程同步,在某个时刻只允许一个线程写,所以是线程安全的

PS

1. 线程同步和异步

  1. 线程同步:当线程请求资源时,如果没有得到响应,则线程阻塞,继续等待直到获得需要的资源
  2. 线程异步:当线程请求资源时,如果没有得到响应,则可以先请求其他资源

标签:线性表,队列,ArrayList,Queue,实现,线程,使用,数据结构,LinkedList
From: https://www.cnblogs.com/tianyabo/p/16770764.html

相关文章

  • 03 栈与递归 | 数据结构与算法
    1.栈栈的定义:限定在表尾进行插入和删除操作的线性表空栈:不换任何元素的栈栈顶top:允许插入删除的一端栈的操作(连续设计)置空栈make_null_stack()#definemaxn......
  • redis 数据结构篇
    字符串类型字符串类型是redis当中最基本的数据类型。它能存储任何形式的字符串,包括二进制数据。也就是说可以存储图片。一个字符串类型的键允许值的最大容量是512MB......
  • 阻塞队列、线程池、原子性及并发工具类
    目录​​一、阻塞队列​​​​二、线程池​​​​静态方法创建线程池:​​​​使用ThreadPoolexecutor类创建线程池:​​​​三、原子性​​​​四、并发工具类​​​​HashTa......
  • 数据结构基础—线性表
    数据结构基础—线性表线性表是一种顺序存储结构其特点有:存在唯一的一个被成为”第一个”的数据元素存在唯一的一个被成为”最后一个”的数据元素除第一个之外,集合中的......
  • 【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)
    现在更关注的重点是时间复杂度时间复杂度具体怎么计算?所以时间复杂度是一个估算,看表达式中影响最大的哪一项。大O渐进表示法:例2:算下面的函数的时间复杂度结果为O(N)因为随着N......
  • 【数据结构】时间复杂度和空间复杂度的练习题(仅供学习交流使用)
    习题:解:异或:相同为0相异为1     0和任何数异或都是那个数本身因为这个原理所以两个数交换可以考虑使用异或,不需要考虑顺序代码实现:(++i和i++结果是一样得,如果取返回......
  • 算法 玩转数据结构 2-6 使用泛型
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13411 1重点关注1.1泛型改造==转equals详见3  2课程内容见3 3......
  • 数据结构和算法介绍
     1.什么是数据结构和算法呢?   2.什么是数据结构   图书摆放规则  常见的数据结构     3.什么是算法?     补充 ......
  • JS数据结构与算法
     1.重要性什么是数据结构?数据结构和算法的重要性 2.线性结构2.1数组数组使用的API 2.2栈自定义栈栈的应用 2.3队列自定义队列优先级队列队列的应......
  • 线性表的概念
    线性表的概念目录线性表的概念线性表的定义线性表的特征线性表的常用操作指线性表的定义线性表是由(n>=0)个数据元素(a1,a2,...,an)构成的有限序列。记作:L=(a1,a2,......