本篇将介绍一些常用类型于它的包装类的创建于使用
类型介绍
本篇已Kotlin为主要语言
本篇将记录那些只知道用但不明白具体的类型
LiveData
LiveData是与数据实体类(POJO类)是一样的,它们都是负责数据存储
LiveData也是一个观察者模式的数据实体类,可以与注册它的观察者回调数据是否更新
LiveData还能绑定Activity / Fragment,只在它们生命周期处于活跃状态时才触发回调
代码展示
1
2
3private val _photoListLive = MutableLiveData<String>()
val photoListLive: LiveData<String>
get() = _photoListLiveLiveData一般都是与MutableLiveData一同使用
LiveData在实体类里可以通知指定某个字段的数据更新.(也就是只要发生有点变化,都会进行回调)
MutableLiveData
- MutableLiveData的父类是LiveData
- MutableLiveData则是完全是整个实体类或者数据类型变化后才通知,不会细节到某个字段
Mutable List
在Kotlin中MutableList属于可变类型
MutableList在本质上就是将不可变的List变为可变,随便增加了 插入、删除、替换等方法
创建MutableList
mutableListOf()
1
2//创建一个空的可变list
val numNull = mutableListOf<Int>()mutableListOf(vararg elements: T)
1
2//创建多个元素的可变list
val numMutable = mutableListOf("Alfred", 29, "男", "180cm", "70kg")除此之外,还有add(),addAll(),remove(移除指定元素),removeAt(移除指定位置元素),removeAll(elements: Collection
)(删除集合),clear(清除所有元素),set(替换指定位置元素)
List
在Kotlin中List是属于不可变类型
创建方法
listOf()用于创建没有元素的空List
1
2//创建一个空List
val numbersNull = listOf<Int>()listOf(element: T)创建只有一个元素的List
1
2//创建只有一个元素的List
val numbersOne = listOf<Int>(1)listOf(vararg elements: T)创建拥有多个元素的List
1
2//创建多个元素的List
val numbersMuch = listOf<Int>(1, 2, 4, 9, 3, 5, 6, 1, 0, -1)因为List是不可变类型,所以是不能对List进行增删改的操作的
List是继承至Collection接口,它们几乎上只实现了isEmpty()、size属性、get()、contains()等方法。
Array List
简单来说就是List接口的可调整大小的数组实现,实现所有可选列表操作,并允许所有元素,包括 null
ArrayList的方法中没有锁,所以不是线程安全的
其内部实现是一个数组结构,我们可以根据索引找到具体的内容,也是有序的
创建方法
ArrayList可以创建List,也可以创建自己
1
var list : List<String> = arrayListOf()
List是不可以使用List来创建自己,只能用上面的方法来创建。当使用ArrayList来创建List时,此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。
1
var list : ArrayList<String> = arrayListOf()
而这样创建一对象则保留了ArrayList的所有属性。
HashSet
- HashSet实现了Collection的set接口
- HashSet是不允许集合中有重复的值,当准备使用HashSet时,首先要确保对象已经重写了equals()和hashCode()方法,这样才能比较对象的值是否相等
- add(o : Objecy)方法,用来向Set中添加元素,当元素重复时会返回false,成功则会返回True
HashMap
- HashMap实现了Collection的Map接口,Map接口对键值对进行映射(也就是是存储键值对)
- Map中也是不允许出现重复的值
- 虽然HashMap是非线程安全的,但是Collection提供的方法能保证HashMap synchronized(也就是多个线程访问时,能保证只有一个线程更改Map)
- put(Key : Object ,value : Object )用来将元素添加到map中
ArrayMap
-