数据结构
文章平均质量分 88
旧时言
Java学习博客
展开
-
Java - Lambda的使用
Lambda表达式1背景Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。 Lambda表达式(Lambda expression)可以看作是一个匿名函数,基于数学中的λ演算得名,也可称为闭包(Closure)。1.1 Lambda表达式的语法基本语法: (parameters) -> expression或原创 2022-03-06 21:02:23 · 3411 阅读 · 0 评论 -
Java - 反射和枚举
反射1定义Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。2用途(了解)1、在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法。2、原创 2022-03-06 20:59:43 · 1545 阅读 · 0 评论 -
Java - Map和Set(搜索树、哈希表)
本节目标掌握 Map/Set 及实际实现类 HashMap/TreeMap/HashSet/TreeSet 的使用掌握 TreeMap 和 TreeSet 背后的数据结构搜索树的原理和简单实现掌握 HashMap 和 HashSet 背后的数据结构哈希表的原理和简单实现1. 搜索1.1 概念及场景Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。以前常见的搜索方式有:直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢二分查找,时间复原创 2022-02-20 21:27:31 · 1015 阅读 · 0 评论 -
Java - 泛型
【本节目标】以能阅读 java 集合源码为目标学习泛型了解泛型了解通配符1 什么是泛型一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。----- 来源《Java编程思想》对泛型的介绍。泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。2 引出泛型实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回原创 2022-02-20 11:04:37 · 327 阅读 · 0 评论 -
Java - 比较排序代码实现(快排、归并)
七大比较排序的代码实现import java.util.Arrays;import java.util.Random;import java.util.Stack;/** * Created with IntelliJ IDEA. * User: 12629 * Date: 2022/1/23 * Time: 12:07 * Description: */public class TesSort { /** * 时间复杂度:O(N^2) 。逆序的时候 *原创 2022-02-16 22:25:33 · 285 阅读 · 0 评论 -
Java - 常用的比较排序(快排、归并)
1.概念1.1排序排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。平时的上下文中,如果提到排序,通常指的是排升序(非降序)。通常意义上的排序,都是指的原地排序(in place sort)。1.2稳定性(重要)两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。2.七大基于比较的排序-总览3.插入排序3.1直接插入排序-原理整个区间被分为1.有序区间2.无序区间每次选择无序区间的第一个元素,原创 2022-02-16 17:58:21 · 470 阅读 · 0 评论 -
Java - Java对象的比较
java对象的比较本节目标问题的提出元素的比较Java中对象的比较集合框架中PriorityQueue的比较方式模拟实现PriorityQueue1. 问题提出上节课我们讲了优先级队列,优先级队列在插入元素时有个要求:插入的元素不能是null或者元素之间必须要能够进行比较,为了简单起见,我们只是插入了Integer类型,那优先级队列中能否插入自定义类型对象呢?class Card { public int rank; //数值 public String suit;原创 2022-02-12 19:17:50 · 376 阅读 · 0 评论 -
Java - (优先级队列)堆
优先级队列(堆)本节目标掌握堆的概念及实现掌握 PriorityQueue的使用1. 二叉树的顺序存储1.1 存储方式使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。这种方式的主要用法就是堆的表示1.2 下标关系已知双亲(parent)的下标,则:左孩子(left)下标 = 2 * parent + 1;右孩子(right)下标 = 2 * parent + 2;已知孩子(不区分左右)(child)下标原创 2022-02-11 19:00:23 · 290 阅读 · 0 评论 -
Java - 二叉树
1.树型结构(了解)1.1概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1、T2、…、Tm,其中每一个集合 Ti (1 <= i<= m)又是一棵与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继树是递归定义的。原创 2022-01-29 23:18:56 · 1230 阅读 · 0 评论 -
Java - 栈和队列
栈和队列1.栈(Stack)1.1概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。1.2实现1.利用顺序表实现,即使用尾插 +尾删的方式实现2.利用链表实现,则头尾皆可。(单链表用头插+头删法。或者使用双向链表。)相对来说,顺序表的实现上要原创 2022-01-16 16:17:00 · 3774 阅读 · 0 评论 -
Java - List(泛型、包装类、List)
本节目标学习一个新的 java 语法泛型的使用学习一个新的 java 概念,包装类List / ArrayList / LinkedList 的基本使用ArrayList 类的使用LinkedList 类的使用1. 预备知识-泛型(Generic)1.1 泛型的引入问题:我们之前实现过的顺序表,只能保存 int 类型的元素,如果现在需要保存 指向 Person 类型对象的引用的顺序表,请问应该如何解决?如果又需要保存指向 Book 对象类型的引用呢?回答:首先,我们在学习多态过程中原创 2021-11-25 15:27:11 · 9226 阅读 · 0 评论 -
Java - 集合框架及背后的数据结构
本节目标了解什么是集合框架了解学习集合框架的意义掌握集合框架相关接口和常见的实现类了解下一阶段要学习的内容1. 介绍官方教程Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索retrieve 、管理 manipulate原创 2021-11-25 13:51:20 · 315 阅读 · 0 评论