类型介绍

本篇将介绍一些常用类型于它的包装类的创建于使用

类型介绍

本篇已Kotlin为主要语言

本篇将记录那些只知道用但不明白具体的类型

LiveData

  • LiveData是与数据实体类(POJO类)是一样的,它们都是负责数据存储

  • LiveData也是一个观察者模式的数据实体类,可以与注册它的观察者回调数据是否更新

  • LiveData还能绑定Activity / Fragment,只在它们生命周期处于活跃状态时才触发回调

  • 代码展示

    1
    2
    3
    private val _photoListLive = MutableLiveData<String>()
    val photoListLive: LiveData<String>
    get() = _photoListLive

    LiveData一般都是与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

  • ArraySet

-