二叉树的遍历
前言 二叉树的遍历是二叉树的基础算法,本文对个人的遍历写法做个记录 深度优先遍历 递归写法 递归遍历比较简单,不作讲解和注释 // 前序遍历 void preorder(Node* node) { if (node) { visit(node); preorder(node->left); preorder(node-&...
前言 二叉树的遍历是二叉树的基础算法,本文对个人的遍历写法做个记录 深度优先遍历 递归写法 递归遍历比较简单,不作讲解和注释 // 前序遍历 void preorder(Node* node) { if (node) { visit(node); preorder(node->left); preorder(node-&...
前言 SharpPcap与WinPcap基本用法上相差不多,但对数据包解析这个功能,SharpPcap提供了很多方法来帮我们解析数据包,而在WinPcap中,我们需要定义好包的实体类型,通过指针强转来解析包的内容字节数组,SharpPcap着实方便不少。但好奇心驱使我去看看SharpPcap是如何实现解析的,正好也学习一下,因此阅读了SharpPcap的GitHub仓库的部分源码,主要是P...
开始 kotlin将Map、Set和List都分为只读和可变两种类型,只读类型使用原始名称,可变类型带有Mutable前缀,可变类型在只读类型的基础上扩展了读写接口 容器类图如下 容器默认实现 MutableList:ArrayList MutableSet:LinkedHashSet MutableMap:LinkedHashMap 自定义集合:kotlin提...
开始 Kotlin反射依赖反射库实现 implementation "org.jetbrains.kotlin:kotlin-reflect:1.8.10" Kotlin中可以直接使用java的反射,目前java反射的性能还是高于Kotlin,因此实际使用大多使用java反射 有两种方式获取java的Class对象 javaClass字段 KClass的java字段 ...
开始 高阶函数是将函数作为参数和返回值的函数,函数可以作为对象进行传递,函数对象的类型由参数和返回值表示,参数名可省略 (Int, Int) -> Int () -> Unit // 最简单的函数 // 一个函数对象也可以如下声明 val method: (Int) -> Int 函数类型支持可空类型,支持嵌套,支持类型别名 ((Int, Int) -> U...
开始 kotlin函数使用fun关键字声明,参数必须有类型声明 fun function(arg: Int): Int { return arg * 2 } 函数作用域:顶层函数、成员函数、局部函数 kotlin支持顶层函数和顶层属性,也支持局部函数 默认参数和具名参数 函数参数可以使用默认参数,使用函数时可以使用具名参数指定参数值 fun add(a: Int, b...
开始 泛型类 class MyClass<T> { fun method(t: T): T } 泛型函数 fun <T> method(t: T): T { // statements } 泛型约束 用于约束泛型参数的上界,类似java的extends,默认的上界是Any? class Person<T : String>...
开始 委托模式是将一个对象的职责委托给其他对象完成,kotlin委托通过by关键字实现 类委托 将类中的方法委托到被委托对象实现 interface Method { fun method() } class MethodImpl : Method { override fun method() { // statement } } // 委...
开始 使用class关键字声明一个类,类中包含构造器、初始化块、方法、属性、内部类 class Obj // 创建一个空类 kotlin中没有new关键字,直接使用函数形式创建对象 var obj: Obj = Obj() 访问修饰符 kotlin的访问修饰符有public、protected、private、internal,可用于类、接口、属性、构造器、方法 默认权限都...
前言 自从学习完Kotlin,一直想把学习过程中的笔记总结起来发一下,现在总算有时间整理一下以前的笔记了,Kotlin现在可以算是我最喜欢的一门语言了,简洁又优雅,Kotlin现在也正在发展成一门多平台语言,希望Kotlin越来越好
(早日取代Java这个老古董) 文章导航 基础篇...