快学scala之List操作

本文通过实例代码介绍了Scala中List的各种操作,包括连接列表、获取元素、头尾元素、基本操作、过滤、映射、求和、存在性检查、排序、匿名方法、切片、索引、zip以及转换等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

object list_opt {

  def main(args: Array[String]) {
    // init list
    val list1 = List("a", "b", "c")
    val list2 = List(1, 2, 3)
    val list3 = "a" :: "b" :: "c" :: Nil // last element is Nil

    // ::: connect two list
    val list_1_2 = list1 ::: list2
    println(list_1_2) //List(a, b, c, 1, 2, 3)


    val list_2 = 0 :: list2 // add to head
    // get element list(index),start with 0
    println(list1(1)) // b
    // get head
    println("head : " + list1.head + " tail :" + list1.tail) //head : a tail :List(b, c)
    println("second element : " + list1.tail.head) //second element : b

    // basic opt
    val l = List("hello", "scala", "java", "hadoop")
    println(l.count(s => s.length == 5)) // 2 count the element length equal 5
    l.filter(s => s.length == 5).foreach(println) //hello scala
    list2.map(_ + 1).foreach(println) // 2 3 4
    println(list2.sum) // 6
    println(list_1_2.exists(s => s == "c")) //true


    l.mkString(",").foreach(println)


    l.sortBy(s => s.toLowerCase()).foreach(println)

    // match element
    val temp = List("scala", "java", "hadoop")
    val List(a, b, c) = temp
    println("a : " + a + " b: " + b + " c : " + c)
    println(temp.tail) //List(java, hadoop)
    // this method is anonymous method
    val x :: rest = temp
    print("x : " + x + " rest : " + rest) //x : scala rest : List(java, hadoop)List(scala, java)

    /* method :
        l.head :get first element
        l.init :return element expect last one
        l.isEmpty :
        l.last : return last element
        l.map(s => s + ",")
        l.mkString(",")
        l.remove(s => s.length == 4)
        l.reverse : reverse element
        l.sort() : sort
        l.tail : return list expect first element
         */
    // take first 2 element
    println(temp take 2)
    // expect last element
    println(temp init)
    // drop first element
    println(temp drop 1)
    // splitAt index:split into to list by index
    println(temp splitAt 2)
    // get element by index
    println(temp apply (2))

    val data = List('a', 'b', 'c', 'd', 'e')
    // print index
    println(data indices) //Range(0, 1, 2, 3, 4)
    // zip
    println(data.indices zip data) //Vector((0,a), (1,b), (2,c), (3,d), (4,e))

    //convert into new list
    println(data.toString()) // List(a, b, c, d, e)
    println(data mkString("[", ",", "]")) //[a,b,c,d,e]
    println(data mkString " ") //a b c d e

    // iterator element 
    val it = data.iterator
    //    val it = data.toIterator
    //    for (i <- it)
    //      println(i)
    while (it.hasNext) println(it.next())
    val li = List(1, 2, 3, 4, 5)
    println(li partition (_ > 3)) //(List(4, 5),List(1, 2, 3))
  }

  // sort list
  val shuffledList = List(4, 3, 8, 9, 1, 6, 2)
  sort(shuffledList).foreach(println)


  def sort(list: List[Int]): List[Int] = list match {
    case List() => List()
    case head :: tail => compute(head, sort(tail))
  }

  def compute(data: Int, dataSet: List[Int]): List[Int] = dataSet match {
    case List() => List(data)
    case head :: tail => if (data <= head) data :: dataSet
    else head :: compute(data, tail)
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值