集合、数据结构和算法
文章平均质量分 64
Lacrimosa&L
成功不必在我,功力必不唐捐。
展开
-
栈和队列(操作受限的线性表)(数据结构一)
文章目录栈Stack1.1栈的定义1.2栈的顺序存储结构实现栈的应用队列Queue2.1队列的定义api队列的顺序存储结构实现链式队列的应用栈Stack1.1栈的定义栈(Stack)是只能在一端进行插入或删除操作的线性表。栈的主要特点是后进先出。1.2栈的顺序存储结构实现分配一块连续的存储区域存放栈中的元素,并用一个变量指向当前的栈顶。采用顺序存储的栈称为顺序栈,Java Util包下的Stack就是顺序栈。栈的应用队列Queue2.1队列的定义队列也是一种操作受限的线性表。仅能在一原创 2021-03-13 14:08:05 · 1327 阅读 · 4 评论 -
文章四:Set接口与其子实现(HashSet、LinkedHashSet、TreeSet)(0312)
文章目录1 Set接口概述Api2 HashSet概述构造方法Api源码3 LinkedHashSet概述构造方法4 TreeSet概述构造方法ApiPM Lesson21 hours(01) Set 是继承于Collection的接口。它是一个不允许有重复元素的集合。(02) AbstractSet 是一个抽象类,它继承于AbstractCollection。AbstractCollection实现了Set中的绝大部分函数,为Set的实现类提供了便利。(03) HastSet 和 TreeS原创 2021-03-12 23:39:56 · 296 阅读 · 0 评论 -
文章三:Queue接口与其子接口和子实现(子接口Deque、子实现ArrayDeque、子接口BlockingQueue)(0311)
文章目录1.1Queue接口1.2 Deque1.3 ArrayDeque1.4 BlockingQueue1.1Queue接口概述Collection的一个队列子接口描述的是一个队列有序(线性表),要求子实现不允许存储null,允许重复元素注:LinkList主要作为List接口的子实现,不在上述描述的范围内在queue中出队列操作poll这个方法,如果没有元素可以出队列了,他不是抛出异常,而是返回一个null来标记所以不能存储null,如果能存储,就有歧义boolean add(E原创 2021-03-12 08:57:39 · 189 阅读 · 0 评论 -
文章五:Map接口与其子实现(HashMap、LinkedHashMap、TreeMap)(0311、0312)
文章目录2.1 Map接口概述Api2.2 HashMap底层结构概述构造方法2.1 Map接口概述1、Map集合体系的顶级接口2、Map的实现子类,不允许存储重复元素(不可以重复的key)3、有些子实现允许存储null(指key):HashMap、LinkedHashMap有些子实现不允许存储null:TreeMap4、有些子实现是有序的(指key):LinkedHashMap、TreeMap(指的是大小有序)有些子实现是无序的(指key):HashMap5、只能添加key - valu原创 2021-03-12 00:08:37 · 287 阅读 · 1 评论 -
HashMap的源码分析(初始化情况、扩容的情况)(构造方法)
HashMap<String, Integer> map = new HashMap<>(); map.put("zs", 18);按照初始情况来分析class HashMap{ transient Node<K,V>[] table;// Hashmap的底层数组 int threshold;// 阈值(数组初始长度 * 加载因子) //(数组初始长度16,加载因子0.75,则阈值12)(数组初始长度32..原创 2021-03-11 21:56:09 · 182 阅读 · 0 评论 -
5 LinkedList(0310)
文章目录概述构造方法API概述(1)LinkedList是List的一个链表实现(2)是个线性表(3)底层维护了一个双向链表(4)允许null,允许重复,有序(5)线程不安全(6)不仅仅是List子实现(主要),也是Deque接口的实现(次要)(7)不仅仅可以作为普通的线性表,它还可以充当 普通队列、双端队列、栈(不仅有Deque中的方法,还有Queue(Deque的父接口)中的方法)构造方法APIpublic class LinkedList<E>原创 2021-03-10 21:06:36 · 198 阅读 · 0 评论 -
文章二:List接口与其子实现(重要的ArrayList、Vector、Stack、次重要的LinkedList)(0310)
3 Vector(注意扩容和线程安全2个问题,这是和ArrayList不同的地方)(1)极其类似ArrayList,一个作用:面试会把Vector和ArrayList做对比(2)是List子实现(3)是个线性表实现(4)底层机构是个数组初始容量默认是10、扩容默认为2倍(增量是个全局变量,默认是0)如果构造方法传入了增量,那么扩容的时候扩增量大小,比如为1(6)允许重复、null、有序(7)线程安全补充:当下常用的集合类基本上都是jdk 1.2的时候产生的Vector是jdk 1.0时原创 2021-03-10 20:30:33 · 188 阅读 · 1 评论 -
文章一:顶级接口Collection(0309)
文章目录链表:会写【上课实现的内容会】数据结构理论:线性表(栈、队列),树(普通、二叉、二叉搜索、自平衡、红黑树)【记住】重要程度:1、HashMap,ArrayList2、HashSet, LinkedList3、 LinkedHashMap, LinkedHashSet, TreeSet, TreeMap4、ArrayDeque, queue5、绿色是谁的子类,-- 代表着那种数据结构, - 底层结构 - 初始容量和扩容机制(数组) -是否有序, 是否允许null, 是否允许重复原创 2021-03-10 09:12:26 · 234 阅读 · 1 评论 -
红黑树
文章目录2-3-4树概念插入红黑树概念操作旋转操作插入删除(较插入更为复杂)总结Java 中的 TreeMap,JDK 1.8 中的 HashMap、C++ STL 中的 map 均是基于红黑树结构实现的红黑树是一种特殊的二叉搜索树,是自平衡的二叉搜索树(说法不是很准确)红黑树是实现,自平衡的二叉搜索树是算法和逻辑叶节点的层级差的绝对值不超过1,叶子表示nil值。否则,需要旋转(插入时导致不平衡)学习红黑树前,先学2-3-4树2-3-4树概念在普通的二叉查找树上进行了拓展,它允许有多个键(原创 2021-03-06 20:26:52 · 333 阅读 · 0 评论 -
线性表之栈和队列(操作受限的线性表)(数据结构一)
手动实现一个集合类数据结构: 队列底层: 循环数组利用循环数组实现队列:MyQueuepublic class MyQueue <T> { private final int INIT_CAPACITY = 10; //默认的初始容量 private final int MAX_CAPACITY = Integer.MAX_VALUE - 8 ;//最大阈值 private Object [] arrs;//底层数组 private int size;原创 2021-03-05 23:27:58 · 230 阅读 · 0 评论 -
泛型
Data:3.42.0 理解泛型定义很简单,工具类比较常用泛型(使用上)。.泛型:参数化类型,把类型当做参数传进去(事先不固定类型),具体使用的时候再确定类型.泛型,即“参数化类型”。顾名思义,就是将类型由原来的具体的类型’参数化’,此时类型也定义成参数形式,然后在使用/调用时传入具体的类型。2.1泛型擦除泛型仅存在于编译之前, 在jdk帮我们编译带泛型的代码的时候, 会自动把泛型进行擦除(变成Object)Java: 尽量把运行时异常, 转化到编译时 a. 提高了程序的安全性原创 2021-03-05 23:10:11 · 157 阅读 · 2 评论 -
树的一般操作(递归,队列Queue)
文章目录判断树中结点个数 public static <T> int getTreeNum(TreeNode<T> root)判断树中结点个数 public static int getTreeNum(TreeNode root)return getTreeNum(root.leftChild) + getTreeNum(root.rightChild) + 1;判断树的深度 public static int getTreeDepth(Tree原创 2021-03-05 22:27:26 · 308 阅读 · 3 评论 -
树(数据结构三)
文章目录概念什么是树?根结点、父结点、孩子结点、叶子结点结点的度:子树个数树的度:最大的结点的度树的高度和深度基本操作实现实现1实现2树的常见分类及使用场景二叉排序树平衡二叉树哈弗曼树B树、B+树红黑树概念什么是树?线性结构:如数组和链表非线性结构:树是典型例子,不再是一对一,而是一对多(图则是多对多)根结点、父结点、孩子结点、叶子结点结点的度:子树个数树的度:最大的结点的度树的高度和深度基本操作实现实现1实现2树的常见分类及使用场景二叉排序树平衡二叉树哈弗曼树B树、B原创 2021-03-05 08:22:04 · 324 阅读 · 1 评论 -
线性表(链表实现和数组实现)(数据结构一)
文章目录1 . Concept概念Question时空复杂度2 . Array & Linked List(数组&链表)2.1Array(数组)2.2Linked List(链表)Basic基础链表的分类单链表的操作interview question(面试题)1 . Concept概念Question数据结构集合Collaction接口Map接口 集合类:本质就是一个数据容器,盒子。同属于一个集合。线性表:一对一树:一对多图:多对多逻辑结构物理结构:数组 /原创 2021-03-02 23:30:34 · 471 阅读 · 0 评论 -
Leetcode20.有效的括号
文章目录Stack栈(LIFO)题目代码总结Stack栈(LIFO)Stack 类表示后进先出(LIFO)的对象堆栈。它通过五个操作(五个方法)对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。 题目代码在这里插入代码片总结在这里插入代码片...原创 2021-02-23 11:27:36 · 167 阅读 · 1 评论 -
Leetcode13. 罗马数字转整数
package com.cskaoyan.otherstream;import com.sun.org.apache.bcel.internal.generic.RETURN;/*罗马数字转字符规则: 当小值在大值的左边,则减小值,如 IV=5-1=4 当小值在大值的右边,则加小值,如 VI=5+1=6; 输入: "MCMXCIV" 输出: 1994 解释: M = 1000, CM = 900, XC = 9.原创 2021-02-21 23:26:30 · 280 阅读 · 1 评论 -
Leetcode_118杨辉三角
文章目录题目代码总结与思考题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行在杨辉三角中,每个数是它左上方和右上方的数的和代码class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> ansList = new ArrayList<>();原创 2021-02-17 18:49:59 · 193 阅读 · 1 评论 -
Map接口(二)
文章目录概述正在更新中概述Map与Collection并列存在。用于保存具有映射关系的数据:key-valueMap 中的 key 用Set来存放,不允许重复,即同一个 Map 对象所对应的类,须重写hashCode()和equals()方法【理解】常用String类作为Map的“键” Map接口的常用实现类(5个):HashMap、TreeMap、LinkedHashMap和Properties。其中,HashMap是 Map 接口使用频率最高的 实现类...原创 2021-02-17 18:43:19 · 290 阅读 · 0 评论 -
集合与Collection接口(主要用List接口)(一)
文章目录集合框架概述collection接口中常用的14个(抽象)方法集合框架概述Java 集合可分为 Collection 和 Map 两种体系Collection接口:单列数据,定义了存取一组对象的方法的集合 List:元素有序、可重复的集合 Set:元素无序、不可重复的集合Map接口:双列数据,保存具有映射关系“key-value对”的集合Collection接口Map接口collection接口中常用的14个(抽象)方法...原创 2021-02-07 21:49:03 · 351 阅读 · 0 评论