队列和栈1. Queue 队列(Queue)是常用的数据结构,可以将队列看成特殊的线性表,队列限制了对线性表的访问方式:只能从线性表的一端添加(offer)元素,从另一端取出(poll)元素.队列遵循先进先出(FIFO First Input First Output )的原则.JDK中提供了Queue接口,同时使得LinkedList实现了该接口(选择LinkedList实现Queue的原因在于Queue经常要进行插入和删除的操作,而LinkedList在这方面效率较高).Queue提供了操作…
集合操作——线性表 List: add().remove().subList().list.toArray().array.asList(). List排序:  Collections.sort(list);    Comparable. comparator ListList接口是Collection的子接口,用于定义线性表数据结构:可以将List理解为存放对象的数组,只不过其元素个数可以动态的增加或减少.并且List是可重复集 ArrayList和LinkedList List接口的两个常见…
双向链表:如图1-3 所示,会把当前header拆分开,重新插入一个Entry<E>. LinkedList源码 0.首先这个类中的两个变量 private transient Entry<E> header = new Entry<E>(null, null, null);private transient int size = 0; 下面的这个size就不用说了,是大小,现在先着重看看 Entry<E> header, Entry是一个内部类. priv…
前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基础知识,是程序员的地基. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算法和方便以后复习. 1. 线性表与非线性表 线性表(Linear List):就是数据排成像一条线一样的结构.每个线性表上的数据最多只有前和后两个方向.数组.链表…
数据结构与算法是程序设计的两大基础,大型的IT企业面试时也会出数据结构和算法的题目, 它可以说明你是否有良好的逻辑思维,如果你具备良好的逻辑思维,即使技术存在某些缺陷,面试公司也会认为你很有培养价值,至少在一段时间之后,技术可以很快得到提高.同时,它也是软考的重点,我们需要对这部分的内容进行一下总结. 我们先看一下数据结构和算法的整体内容. 1.线性表 概念: 数据元素的排列方式是线性的. 分类: 分类规则是根据上图中元素的存储结构来划分的. (1)顺序表 基本思想:元素的存储空间是连续的.在内…
前言 线性表不仅可以存储重复的元素,而且可以指定元素存储的位置并根据下表访问元素. List接口的两个具体实现:数组线性表类ArrayList.链表类LinkedList. ArrayList ArrayList使用数组存储元素,这个数组是动态创建的.如果元素个数超过了数组的容量,就会创建一个更大的数组,并将当前数组中的所有元素都复制到新数组中.另外需要注意的是,ArrayList容量可能根据元素的增加而自动增大,但是不能自动减少.可以使用trimToSize()将数组容量减少到线性表大小. L…
线性表 线性表(亦作顺序表)是最基本.最简单.也是最常用的一种数据结构.线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的.线性表的逻辑结构简单,便于实现和操作.因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构. 中文名                                                                     线性表 外文名 linear list 目录 1 结构 2 特征 3 结构特…
一.栈的介绍 任何数据结构都是一种规则 栈就是在最基础的结构--线性结构和链式结构上面定义规则形成的 如果对基本数据结构(线性表和链表)有疑问的同学可以看我之前的博客:https://www.cnblogs.com/yxm2020/p/12762888.html 规则如下: 限制链表或者线性表元素的插入和取出,只能在同一端进行操作,运行插入的一段称为栈顶(top),另一端为固定的一端,成为栈底. 图解:(入栈和出栈) 特点: 先入后出FILO(First in last out),最先放入栈的数…
1. Java集合框架中的所有实例类都实现了Cloneable和Seriablizable接口.所以,它们的实例都是可复制和可序列化的. 2. 规则集存储的是不重复的元素.若要在集合中存储重复的元素,就需要使用线性表.线性表不仅可以存储重复的元素,而且允许用户指定存储的位置.用户可以通过下标来访问线性表中的元素. 3. Java集合支持三种类型的规则集:散列集HashSet.链式散列集LinkedHashSet和树形集TreeSet.HashSet以一个不可预知的顺序存储元素:LinkedHas…
1.集合 2.迭代器 例子: 3.线性表 List接口继承自Collection接口,有两个具体的类ArrayList或者LinkedList来创建一个线性表 数组线性表ArrayList LinkedList类 Comparator接口 如果元素的类没有实现Comparable接口,那么可以定义一个比较器comparator来比较,需要创建一个实现Comparator<T> 接口的类并重写他的compare方法 例子: 注意:比较器要实现Serializable接口序列化 测试代码 Comp…