zoukankan      html  css  js  c++  java
  • scala 数据结构(四):列表 List

    1 列表 List-创建List

    基本介绍

    Scala中的List 和Java List 不一样,在Java中List是一个接口,真正存放数据是ArrayList,而Scala的List可以直接存放数据,就是一个object,默认情况下Scala的List是不可变的,List属于序列Seq。

    val List = scala.collection.immutable.List
    object List extends SeqFactory[List]

    创建List的应用案例

    val list01 = List(1, 2, 3) //创建时,直接分配元素
    println(list01)
    val list02 = Nil  //空集合
    println(list02)

    创建List的应用案例小结

    1)List默认为不可变的集合 List

    2) 在 scala包对象声明的,因此不需要引入其它包也可以使用

    3) val List = scala.collection.immutable.List

    4) List 中可以放任何数据类型,比如 arr1的类型为 List[Any]

    5) 如果希望得到一个空列表,可以使用Nil对象, 在 scala包对象声明的,因此不需要引入其它包也可以使用

    val Nil = scala.collection.immutable.Nil

    2 列表 List-访问List元素

    应用实例

     3 列表 List-元素的追加

    基本介绍

    向列表中增加元素, 会返回新的列表/集合对象。注意:Scala中List元素的追加形式非常独特,和Java不一样。

    方式1-在列表的最后增加数据

    var list1 = List(1, 2, 3, "abc")
    // :+运算符表示在列表的最后增加数据
    val list2 = list1 :+ 4
    println(list1) //list1没有变化
    println(list2) //新的列表结果是 [1, 2, 3, "abc", 4]

    方式2-在列表的最前面增加数据

    var list1 = List(1, 2, 3, "abc")
    // :+运算符表示在列表的最后增加数据
    val list2 = 4 +: list1
    println(list1) //list1没有变化
    println(list2) //新的列表结果是?

    方式3-在列表的最后增加数据

    1) 符号::表示向集合中 新建集合添加元素。

    2) 运算时,集合对象一定要放置在最右边,

    3) 运算规则,从右向左。

    4) ::: 运算符是将集合中的每一个元素加入到空集合中去

    val list1 = List(1, 2, 3, "abc")
    val list5 = 4 :: 5 :: 6 :: list1 :: Nil
    println(list5)
    //下面等价 4 :: 5 :: 6 :: list1
    val list7 = 4 :: 5 :: 6 :: list1 ::: Nil
    println(list7)

    4 列表 ListBuffer

    ListBuffer

    ListBuffer是可变的list集合,可以添加,删除元素,ListBuffer属于序列

    //追一下继承关系即可

    Seq var listBuffer = ListBuffer(1,2)

    val lst0 = ListBuffer[Int](1, 2, 3)
    
    println("lst0(2)=" + lst0(2))
    for (item <- lst0) {
    println("item=" + item)
    }
    
    val lst1 = new ListBuffer[Int]
    lst1 += 4
    lst1.append(5)
    
    lst0 ++= lst1
    val lst2 = lst0 ++ lst1
    val lst3 = lst0 :+ 5
    
    println("=====删除=======")
    println("lst1=" + lst1)
    lst1.remove(1)
    for (item <- lst1) {
    println("item=" + item)
    }
  • 相关阅读:
    oracle数据段详解
    监听静态注册与动态注册
    Oracle网络相关概念与常用配置文件
    pycharm社区版安装及遇到的问题
    强化学习-K摇臂赌博机
    概率图模型
    半监督学习
    卷积神经网络
    递归神经网络
    玻尔兹曼机及其相关模型
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13264115.html
Copyright © 2011-2022 走看看