码迷,mamicode.com
首页 > 编程语言 > 详细

3.数组和列表

时间:2018-03-28 14:11:43      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:访问   update   改变   列表   个数   sort   大小   append   相同   

一、数组Array

1.创建数组

  隐式:val greetStrings = new Array[String](3);

  显式:val greetStrings : Array[String] = new Arrray[String](3);

2.赋值

  (1)greetStrings(0) = "hello";

      greetStrings(1) = ",";

      greetStrings(2) = "world\n";   //注意,后边是括号(),并不是[ ]

  (2)val greetStrings = Array("hello",",","world\n");//编译器会推断出数组的类型为Array[String],同样后边是()并不是[ ]

  (3)greetStings.update(0,"Hello");//改变0位置的元素

3.遍历

  for(i <- 0 until greetStrings.length)

    println(i + ":" + greetingString(i));

二、列表list

1.创建列表

  val oneTwoThree = List(1,2,3);

  val oneTwoThree:List[Int] = List(1,2,3); //注意,因为list不可变不能向数组那样,先实例再赋值,必须实例的时候就进行赋值。

2.遍历

  (1)for(i <- 0 until oneTwoThree.length)

    println(i + ":" + oneTwoThree(i));//同数组,随机访问是list(i),不是list[i]

  (2)println(oneTwoThree); //注意数组不能这么直接打印

     (3)oneTwoThree.foreach(print)

3.列表拼接  

 (1)List有个办法叫“:::”用于两个列表拼接。

  val one = List(1,2);

  val two = List(3,4);

  var oneAddTwo = one ::: two;

 (2)在已有列表前添加一个元素 “::”

  val three = 5 :: one ;

  val one = 1 :: 2 :: Nil; //创建一个one = List(1,2);Nil代表一个空List。

  有同学要问,为什么不在list表尾添加元素呢,非要在表头添加呢?其实List.append(或 + )方法提供了在list表尾添加元素的功能。

  但是在结尾添加元素的操作时间随着列表的大小线性增加,而使用::在表头添加的话只需要常量时间。

  如果非要在表尾添加元素,我们可以通过依次在表头添加,然后调用list.reverse方法反序列表,达成高效建表。

 (3)一些常用方法

  val thrill = “will” :: "fill" :: "until" :: Nil;

  thrill.count(s =>s.length == 4); //对thrill中长度为4的字符串进行计数,返回2

  thrill.drop(2);//返回去掉了头两个元素的列表

  thrill.dropRight(2);//返回去掉尾两个元素的列表

  thrill.exist(s => s == "until");//判断thrill中是否含有“until”

  thrill.filter(s => s.length ==4); //返回thrill中长度为4的元素

       thrill.filterNot(s => s.length ==4); //返回thrill中长度不为4的元素

  thrill.forall(s => s.endsWith("l"));//判断thrill是否所有元素都以l结尾,返回boolean

  thrill.foreach(print);//遍历

  thrill.head;//返回thrill的首个元素

  thrill.last;//返回最后一个元素

  thrill.init;//返回列表除了最后一个元素外的其他元素组成的列表

  thrill.tail;//返回除了第一个元素之外的其他元素组成的列表

  thrill.isEmpty;//是否为空

  thrill.length;//长度

  thrill.map(s => s+"y");//对列表的每一个元素加上y

  thrill.mkString(",");//返回用列表所有元素组成的字符串,“Will,fill,until”

  thrill.reverse ;//列表反转

  thrill sort((s,t) => s.charAt(0)toLower > t.charAt(0)toLower) ;//对首字符进行排序

三、数组和列表的联系与区别

  Scala数组是一个拥有相同类型的对象的可变序列,也就是说一个数组中只能包含相同类型的元素。虽然无法在数组实例化以后改变其长度,但是却可以改变它的元素值,因此,数组是可变的对象

  Scala列表,跟数组类似只能包含相同类型的元素,但是列表是不可变的,每次改变List的操作都会返回一个新的List,这有点类似于JAVA里的String呀有木有。

  注意,Scala中的List和JAVA中的List虽然拥有相同的名字,但是可不是一个东西,区别很大。

3.数组和列表

标签:访问   update   改变   列表   个数   sort   大小   append   相同   

原文地址:https://www.cnblogs.com/zzhangyuhang/p/8663071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!