首页 > 其他分享 >数组及元组

数组及元组

时间:2023-08-13 09:26:30浏览次数:31  
标签:val 元素 元组 数组 new Array

第3章 数组及元组

3.1 定长数组

定义长度不变的数组可以使用Array

Scala数组的底层实际上是Java数组。例如字符串数组在底层就是Java的String[],整数数组在底层就是Java的Int[]

val nums = new Array[Int](10)//生成10个整数的数组,所有元素初始化为0
val nums = new Array[String](10)//生成10个字符串的数组,所有元素初始化为null
val s = Array("hello", "world")//已提供初始值就不需要new了
s(0) = "good"//使用()而不是[]来访问元素

[Any]泛型表示该数组可以存放任意类型。

3.2 变长数组

如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer。

+=或++=用于在数组尾端添加元素,当添加多个元素时已括号包起来

import scala.collection.mutable.ArrayBuffer
val b = ArrayBuffer[int]()//或new ArrayBuffer[int]
b += 1//添加一个元素
b += (2, 3)//添加多个元素

trimEnd()和remove()用于移除元素

trimEnd(a):是从数组尾开始移除a位元素

remove(a,(b)):删除脚标为a的元素,如果有b参数,就从脚标为a的元素开始删除b位元素

b.trimEnd(2)//移除最后2个元素

insert()插入元素

b.insert(1, 6)//在脚标为2的位置插入6
b.insert(2, 7, 8, 9)//在脚标为2的位置插入7,8,9

3.3 遍历

for(i <- 区间)会遍历该区间所有的值

(0 until a.length).reverse //从数组尾端开始遍历

for(elem <- 数组) //直接访问数组中的每个元素

3.4 数组转换

toArray和toBuffer用于数组与缓冲区相互转换

for(...)yield 用于创建一个和以前一样的数组或缓冲区

遍历一个数组时并处理符合条件的元素,例如:

for(elem <- a if elem % 2 == 0) yield 2 * elem
或
a.felter{ _ % 2 == 0} map {2 * _}

3.5 常用算法

sum方法用于数值型元素求和

min和max用于输出数组或缓冲区的最小和最大元素

sorted用于排序并返回经过排序的新数组

sorted(_ > _)从大到小排序

mkString方法在指定元素间的分隔符

val a = Array(1, 7, 2, 9)
a.mkString(" , ")	//"1 , 7 , 2 , 9"

3.6 多维数组

可以用ofDim方法构建

val matrix = Array.ofDim[Double](3, 4)//3行4列的数组

访问其中的元素要用两个圆括号

matrix(row)(column) = 42

3.7 元组

元组是不同类型值的聚集,元组的值是通过单个的值包含在圆括号中构成,例如:

(1,3.14,“Fred”)

定义元组的方式

元组中最大只能有22个元素

获取元组方式:元组._1 或 元组 _1

试图通过一个类型参数来限定元组中所有

的元素的类型是错误的

3.8 拉链操作

将两个元组的值做对应的关联组成对偶的数组

val a = Array(0, 1, 2)
val b = Array("a", "b", "c")
val pairs = a.zip(b)	//Array((0, "a"), (1, "b"), (2, "c"))

标签:val,元素,元组,数组,new,Array
From: https://www.cnblogs.com/simpleness/p/17626133.html

相关文章

  • 树状数组
    前置知识:lowbit运算\(lowbit(x)\)表示正整数\(x\)在二进制表示下最低位的\(1\)跟后面的\(0\)构成的数值,有\(lowbit(x)=x\)&$($~\(~x+1)\),即\(lowbit(x)=x\)&\(-x\),理由如下:\(lowbit(x)\)是最后一位\(1\)所以跟前面的位没啥关系,祂在二进制表示下肯定就是\(......
  • 链表和数组的区别
    链表和数组的区别链表逻辑上相邻的元素在物理位置上不一定相邻。优点:插入、删除效率高,不需要一个连续的很大的内存缺点:查找某一个位置的元素效率低。数组优点:存取速度快缺点:1.整块连续空间,占很大内存。2.插入或删除数据效率低、不方便链表数组逻辑上相......
  • 随笔-C-指针数组使用简记
    typedefstructmem_list*cns_detail_encode_result[encode_type_max];(gdb)p&((structmem_list**)0x7fffb4557950)[0]#&取对应点的位置$29=(structmem_list**)0x7fffb4557950(gdb)p((structmem_list**)0x7fffb4557950)+0$30=(structmem_list**)......
  • 【蓝桥杯备赛系列 | 简单题】数组排序(八大排序演示)
    ......
  • 找出数组中两个数的和等于给定目标值
    注意,输出的是数在列表中的索引,所以组织字典时用这个结构{list_value:list_index}deftwo_sum(nums,target):num_dict={}fori,numinenumerate(nums):complement=target-numifcomplementinnum_dict:return[num_dict[comp......
  • 数组方法slice使用
    目录前言导语代码部分总结前言我是歌谣歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语数组方法slice使用编辑代码部分```varfangfang=["geyao","fangfang","huahua","mingming"]//arr.slice([begin[,end]])varfangfangTest=fangfang.slice(1)//从第一位进行截取cons......
  • 认识Javascript数组
    1.认识数组 数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能 1.1定义数组声明有10个元素的数组vara=newArray(10此时为a已经......
  • Leetcode 977. 有序数组的平方(Squares of a sorted array)
    题目链接给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序.示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]示例2:输入:nums=[-7,-3,2,3,11]输......
  • Go数组转换,[]byte、[]unint16互相转换的方法封装,完整范例
    需求:分别封装方法将[]byte转换成[]unint16,将[]unint16转换成[]bytebyte相当于unint8分析:长度为20的[]byte转换为长度为10的[]unint16,他们之间的转换如bytes:=[]byte{0,1}  ===》[0*256+1]=1 注意:第奇数乘256加偶数的值则[]uint16的值为[1]完整代码如下:1pack......
  • 创建元组的三种方式、字典中的setdefault和get妙用、类中的重载方法__add__()
    创建元组的三种方式#print(tuple([input(),input()]))#print((input(),input()))t=input(),input()print(t)#可以将列表转换成tuple,也可以直接()创建tuple,或者将多个变量赋值给一个值会自动转换成tuple字典中的setdefault和get妙用setdefault类似get方法w=input()......