文章目录 一、MutableList 可变列表集合 二、修改 MutableList 集合的 mutator 函数 1、添加元素运算符 += 和 删除元素运算符 -= 2、通过 Lambda 表达式筛选要删除的元素...一、MutableList 可变列表集合 ---- 使用 listOf 函数 创建的 List 集合 是 只读列表集合 ; 使用 mutableListOf 函数 创建的 MutableList 集合...// 添加元素 mutableList.add("Jack") // 删除元素 mutableList.remove("Tom") println(mutableList...val mutable: MutableList = list.toMutableList() } 执行结果 : [Jerry, Jack] 二、修改 MutableList..." 其效果等同于 mutableList.add("Jack") 从 MutableList 集合 中删除一些元素 , 可使用 -= 运算符 : mutableList -= "Tom" 其效果等同于
Kotlin设计之初就是不允许非null变量在声明期间不进行初始化的,为了解决这个问题,Kotlin lateinit 允许我们先声明一个变量,然后在程序执行周期的将来某个时候将其初始化,让编译检查时不会...因为属性变量未被初始化而报错。...所以我们在 Kotlin 1.2及更高版本上,经常使用基于反射的API 快速检查lateinit属性是否已初始化。...private lateinit var mList: MutableList<String fun main(args: Array<String ) { if (::mList.isInitialized...){ } } } 会报错: Kotlin: Backing field of ‘var mList: MutableList<String ‘ is not accessible at
("Jack") // 删除元素 mutableList.remove("Tom") println(mutableList) // 将 可变列表集合 转为 只读列表集合...删除元素运算符 -= ; 向 MutableList 集合 中添加一些元素 , 可使用 += 运算符 : mutableList += "Jack" 其效果等同于 mutableList.add("Jack...") 从 MutableList 集合 中删除一些元素 , 可使用 -= 运算符 : mutableList -= "Tom" 其效果等同于 mutableList.remove("Tom") 2、通过...3) var shortArray = shortArrayOf(0, 1, 2, 3) } 十二、Map 集合 ---- 调用 mapOf 函数 创建 Map 集合 , 键值对 元素有两种初始化方式...: 使用 to 函数进行初始化 : 在参数中使用 键 to 值 的方式进行初始化 ; 使用 Pair 对象进行初始化 : 传入 Pair(键, 值) 进行初始化 ; to 函数原型如下 , 其本质也是返回
同时本项目使用Koin作为依赖注入的框架,省去初始化ViewModel、Repository、ViewModelProcider.Factory的过程。...val repository: BmobRepository) : ViewModel() { var libraryRecommendData = MutableLiveData)用来获取云数据库中的数据...中所有推荐开源项目 */ suspend fun getAllRecommendLibrary(libraryRecommendData: MutableLiveData() { override fun done(data: MutableList
类型变量num,赋值10 var num : Int = 10 ps:kotlin中不需要分号结尾,声明变量时数据可以省略数据类型 注:用val关键词声明的变量类似于Java中用final修饰了,声明时必须初始化...、MutableMap 1.2、基本操作 //创建一个List容器 var nameList:MutableList = mutableListof("zack",...容器的时候,需要使用关键词to,to前面是键,后面是值 var map:Map = mapOf("name" to "zack") //创建可变容器 var list:MutableList...3.1、基本方法 //定义一个队列 var list:MutableList = mutableListOf(); //添加元素,将元素添加到对尾...{ it.age } //降序排列 sortByDescending{ it.age } //关于it.age //加入有下列队列,泛型为Person(自定义的类) var humanList:MutableList
类扩展一个swap函数: fun MutableList.swap(index1: Int, index2: Int) { val tmp = this[index1]...MutableList对象调用swap函数: val list = mutableListOf(1, 2, 3) list.swap(0, 2) MutableList泛化类型: //为在表达式中使用泛型...return toString() } 2.类-扩展属性 和扩展函数类似,Kotlin也支持扩展属性: val List.lastIndex: Int // 不能初始化...get() = size - 1 // 只能由getters/setters显式提供 val Foo.bar = 1 // 错误:扩展属性不能有初始化器 get...() = 1 由于扩展没有在类中插入新成员,因此扩展属性无法使用幕后字段, 这就是为什么扩展属性不能有初始化器,只能由getters/setters显式提供!
不可变的容器:Set、List、HashMap 可变的容器:MutableSet、MutableList、MutableHashMap B: 通用方法 isEmpty —— 是否为空 isNotEmpty...—— 是否非空 clear —— 清空容器 contains —— 是否包含指定元素 count —— 获取元素个数/ 也可以通过 size 获取 C: 容器初始化 kotlin中的容器可以在定义的时候就执行初始化赋值操作...容器初始化的函数如下: listOf()、mutableListOf() setOf()、mutableSetOf() mapOf()、mutableMapOf() (2)、Set/MutableSet...userSet.forEache{"用户的姓名为${it.name}"} (3)、List/MutableList A: 特点 有序有索引 能够通过set修改元素值,能够通过get获取元素值通过add方法添加元素...这种方式本质上也是采用了for-in, 但遍历的是索引 for(i in userList.indices){ val user=userList[i] ... } C: 排序 MutableList
(); //将路径赋值给 strFilePath } ui->label->setText(strFilePath); QStringList fileList...
总结 初始化值的是创建变量时赋予变量一个值(不同于赋值的概念) 使用等号=初始化对象时是拷贝初始化,否则是直接初始化 直接初始化也可能调用拷贝构造函数,拷贝初始化可以不调用拷贝构造函数 初始化概念 对象是类的实例化...创建一个对象分为两步:分配内存空间和初始化,刚刚分配的空间有可能包含脏数据,因此我们需要通过初始化函数(C++中指的是构造函数)对分配的空间进行正确地初始化以保证对象值的合法性。...拷贝初始化与直接初始化 C++由于历史原因包含多种不同的初始化方式,我们可以简单地认为:如果使用等号=初始化变量则执行的是拷贝初始化(编译器将等号右边的对象值拷贝到新创建的对象中去),不使用等号时使用的是直接初始化...string s1 = "tomocat"; // 拷贝初始化 string s2("tomocat"); // 直接初始化 string s3(10, 'c'); // 直接初始化...实战 尽管直接初始化和拷贝初始化的定义如上所示,但是由于直接初始化可能调用拷贝构造函数,拷贝初始化不一定调用拷贝构造函数,我们还是结合一些实例来看一下。
初始化赋值 : Kotlin允许在声明容器变量之时进行初始赋值,这点很方便比Java先进,当然不同容器的初始化方法有所区别,具体的对应关系见下表: 只读集合Set setOf 可变集合 ...只读队列List/可变队列MutableList 队列是一种元素之间按照顺序排列的容器,它与集合的最大区别,便是多了个次序管理。...2、MutableList的add方法每次都是把元素添加到队列末尾,也可指定添加的位置; 3、MutableList的set方法允许替换或者修改指定位置的元素; 4、MutableList的removeAt...其一是采取“键名 to 值对象”的形式,其二是采取Pair配对方式形如“Pair(键名, 值对象)”,下面是这两种初始化方式的代码例子: //to方式初始化映射 var goodsMap = mapOf...to goodsA, "华为" to goodsB, "小米" to goodsC, "欧珀" to goodsD, "步步高" to goodsE, "魅族" to goodsF) //Pair方式初始化映射
在编程时,初始化与清理的工作影响着一个程序的安全性,明白初始化的顺序以及其他相关问题可以很有效的避免运行时的对象空指针的问题,以及基本类型数据的值问题 基本数据类型的初始化 1,基本数据类型分别有对应的默认的初始化值...,但如果是方法内部的局部变量,则没有初始化 如图,我在方法内部定义一个int型的变量,在使用时会出现变量没有初始化的错误 2,为基本类型数据指定初始化,成员变量和局部变量均可以,即在定义变量的地方就对变量进行初始化...引用数据类型的初始化 以String为例,观察引用类型的初始化 1,引用数据类型的默认初始化: /** * 打印出对象的默认值 */ private void initObject(){...,那么初始化的顺序在很大程度上可以决定运行时的空指针异常,接下来是分析初始化顺序 因为基本数据类型有默认的初始化值,所以不用考虑在内,主要是引用数据类型的初始化顺序, 有三个类, public class...2,成员变量初始化的顺序为静态成员变量,然后实例成员变量 3,在调用构造器进行初始化时,如果有父类,先初始化父类构造器,从最顶端的父类开始,例如本例中, 在创建ThirdDataClass对象时,先初始化
2. vector的元素被初始化为与其类型相关的缺省值:算术和指针类型的缺省值是 0,对于class 类型,缺省值可通过调用这类的缺省构造函数获得,我们还可以为每个元素提供一个显式的初始值来完成初始化,...例如 vector ivec( 10, -1 ); 定义了 ivec 它包含十个int型的元素 每个元素都被初始化为-1 对于内置数组 我们可以显式地把数组的元素初始化为一组常量值...,例如 : int ia[ 6 ] = { -2, -1, 0, 1, 2, 1024 }; 我们不能用同样的方法显式地初始化 vector ,但是可以将 vector 初始化为一个已有数组的全部或一部分...,只需指定希望被用来初始化 vector 的数组的开始地址以及数组最末元的下一位置来实现,例如: // 把 ia 的 6 个元素拷贝到 ivec 中 vector ivec...( ia, ia+6 ); 被传递给ivec 的两个指针标记了用来初始化对象的值的范围,第二个指针总是指向要拷贝的末元素的下一位置,标记出来的元素范围也可以是数组的一个子集,例如 : //
磁盘在联机后要初始化,同样也有两种方法,一种是调用IOCTL_DISK_CREATE_DISK,还有一种是调用WMI的Initialize方法。...GetLastError(); } CloseHandle(hFile); return retcode; } GPT磁盘类似,不同的地方在于传入的参数变成了GUID 核心代码在于CREATE_DISK结构的初始化发生了变化
= vec.end() ; ++i) { cout << *i << " ";} cout << endl; return ; } 总结起来有以下几个: 2列表初始化,2个拷贝...当然是用迭代器初始化,可以相互转换都可以,而且不要求容器和元素类型相同。
var specs: String = "" var batchno: String = "" var qty: Int = 0 override val childNode: MutableList...get() = null } Head父级列表继承自BaseExpandNode,其中要定义其明细列表MutableList class Head : BaseExpandNode...() { var Bodys: MutableList?...= null var deptno: String = "" var deptname: String = "" override val childNode: MutableList...} } 04 ViewModel中使用Flow ViewModel类中定义了MutableSharedFlow 更新MutableSharedFlow的数据时,使用了tryEmit方式 加入了初始化生成数据
mutableListOf创建可变list val mutableList = mutableListOf("张三", "李四", "王五") mutableList.remove("...张三") mutableList.add("赵六") println(mutableList.getOrElse(1) { "empty" }) println(mutableList.getOrNull...= mutableListOf("张三", "李四", "王五") mutableList += "孙七" mutableList -= "王五" } 还可以基于lambda表达式指定的条件删除元素...创建可变list val mutableList = mutableListOf("张三", "李四", "王五") for (item in mutableList) {...println(item) } mutableList.forEach { println(it) } mutableList.forEachIndexed { index,
= mutableListOf() constructor(name: String, id: Int, email: String, phones: MutableList... = mutableListOf() } 三、fastjson 序列化与反序列化 ---- 使用 fastjson 进行序列化与反序列化 : // 初始化 kim.hsl.protobuf.AddressBook...kim.hsl.protobuf I/MainActivity: fastjson 反序列化耗时 29 ms 四、gson 序列化与反序列化 ---- 使用 gson 进行序列化与反序列化 : // 初始化...com.alibaba.fastjson.JSON import com.google.gson.Gson class JsonTest { fun jsonTest(){ // json 测试 // 初始化... = mutableListOf() constructor(name: String, id: Int, email: String, phones: MutableList
(),返回List接口 class TestKotlin { fun function() { // 创建MutableList可以继续添加修改元素 var mutableList...: MutableList = mutableListOf(1, 2) mutableList.add(3) mutableList.remove(4)...: MutableList = mutableListOf(1, 2, 3, 4) mutableList.forEach { println("Mutable...List Elements:$it") } var mutableList: MutableList = mutableListOf(1, 2)...class TestKotlin { fun function() { var mutableList: MutableList = mutableListOf(1,
一维向量 vector vector_1D_1;//只定义向量 vector vector_1D_2(n);//定义的同时初始化大小 vector vector_1D_3(...n,m);//定义的同时初始化大小为n,元素初始值为m //先定义变量,再初始化大小和初值 vector vector_1D_4; vector_1D_4=vector(n,m);...x vector > vector_2D_5(n,vector_1D_3);//使用已知向量来初始化,第二维大小和vector_1D_3一样 三维向量 vector< vector...);//仅指定第一维大小 vector > > vector_3D_3(n,vector>(m,vector(y)));//初始化维度大小为...n*m*y. vector > > vector_3D_4(n,vector>(m,vector(y,x)));//初始化维度大小为
1、默认初始化,vector为空,size为0,未开辟空间,可通过push_back()添加元素。...vector v; v.push_back(10); 2、默认初始化,指定vector大小,元素初始值默认为0,元素增多时,同样可以通过push_back()来改变vector大小以增加元素。...vector v(5) 3、指定初始化元素值为2 vector v(5,2); 4、指定初始化元素值 vector v = {1,2,3,4,5} 5、用已存在的vector...初始化新的vector vector v(5,2); vector v_copy(v); 6、vector>的初始化 vector>:...说到底也还是一个vector,所以跟vector的初始化一样,第一个值表示大小,第二个表示元素值,只不过不同的是vector>的元素值也是一个vector(同理也可以使用push_back
领取专属 10元无门槛券
手把手带您无忧上云