Array 和 ArrayBuffer 相互转换 | 学习笔记

简介: 快速学习 Array 和 ArrayBuffer 相互转换

开发者学堂课程【Scala 核心编程 - 进阶Array 和 ArrayBuffer 相互转换学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9026


Array 和 ArrayBuffer 相互转换


内容介绍:

一、变长数组分析小结

二、定长数组与变长数组的转换


一、变长数组分析小结

1) ArrayBuffer 是变长数组,类似 java 的 ArrayList

2 ) val arr2 = ArrayBuffer[lnt]()也是使用的 apply 方法构建对象

3)def append(elems: A*) { appendAll(elems)}接收的是可变参数.

4)每 append 一次,arr 在底层会重新分配空间,进行扩容,arr2的内存地址会发生变化,也就成为新的 ArrayBuffer


二、定长数组与变长数组的转换

1.说明

在开发中,我们可能使用对定长数组和变长数组,进行转换

arr1.toBuffer//定长数组转可变数组

arr2.toArray //可变数组转定长数组

2.注意事项

1) arr2.toArray 返回结果才是一个定长数组,arr2本身没有变化

2) arr1.toBuffer 返回结果才是一个可变数组,arr1本身没有变化

3.代码演示

import scala.collection.mutable.ArrayBuffer

object Array22ArrayBuffer {

def main( args : Array[string]): unit = {

val arr2 = ArrayBuffer[Intl]()

//追加值

arr2.append(1,2,3)

println( arr2)

//1.arr2.toArray 调用 arr2的方法 toArray

//2.将 ArrayBuffer ---> Array

//3.arr2本身没有任何变化

val newArr = arr2.toArray;

println( newArr)

//1. newArr.toBuffer 是把 Array->ArrayBuffer

//2.底层的实现

/*override def toBuffer[A1 >: A]: mutable.Buffer[Al] = {val result = new mutable.ArrayBuffer[A1](size)

copyToBuffer( result)

result

*/

//3. newArr本身没变化

val newArr2 = newArr.toBuffer

newArr2.append ( 123)

println( newArr2)

//案例演示+说明

4.运行结果

D : \program\jdk8\bin\java ..ArrayBuffer(1,2,3)

[I@34ce8af7

ArrayBuffer(1,2,3,123)

Process finished with exit code 0

假如在开发中,原先为了效率比较高,弄了一个 array,但是根据一个需求,需要把里面的东西移植到 Arreybuffer 里面去进行动态的修改,但是可能是临时做一下,临时做完之后还要回到 Arrey 继续工作,这个时候就可以用 Arreybuffer。

相关文章
|
Python
Numpy学习笔记(一):array()、range()、arange()用法
这篇文章是关于NumPy库中array()、range()和arange()函数的用法和区别的介绍。
1183 6
Numpy学习笔记(一):array()、range()、arange()用法
|
开发者 索引 Python
Array 数组|学习笔记
快速学习 Array 数组
281 0
Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换
Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换
|
JSON Java 数据格式
|
Scala C# .NET
scala 学习笔记(02) 元组Tuple、数组Array、Map、文件读写、网页抓取示例
package yjmyzz import java.io.PrintWriter import java.util.Date import scala.io.Source object ScalaApp02 { def main(args: Array[Str...
1326 0
List与array的相互转换
1、List->Array 调用List的toArray方法 List list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); String[] strings = list.toArray(new String[list.size()]); 2、Array->List 调用Array的asList方法 String[] strings = {"1","2","3","4"}; List list = Arrays.asList(strings); 以上。
772 0
|
JavaScript C# 数据库管理
ruby学习笔记(6)-Array的使用
ruby的数组基本使用,跟c#中的数组比起来,最不习惯的区别在于允许负索引(跟javascript到有几分相似) arr=[3,4,5,6,7,8,9] puts arr[0] # 3 puts arr.
1058 0

热门文章

最新文章

  • 1
    PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
    280
  • 2
    Java 中数组Array和列表List的转换
    1005
  • 3
    JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
    724
  • 4
    通过array.reduce()实现数据汇总、条件筛选和映射、对象属性的扁平化、转换数据格式、聚合统计、处理树结构数据和性能优化,reduce()的使用详解(附实际应用代码)
    1548
  • 5
    通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
    675
  • 6
    通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
    465
  • 7
    多维数组操作,不要再用遍历循环foreach了!来试试数组展平的小妙招!array.flat()用法与array.flatMap() 用法及二者差异详解
    313
  • 8
    别再用双层遍历循环来做新旧数组对比,寻找新增元素了!使用array.includes和Set来提升代码可读性
    312
  • 9
    Array.forEach实战详解:简化循环与增强代码可读性;Array.forEach怎么用;面对大量数据时怎么提高Array.forEach的性能
    195
  • 10
    深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
    762