Scala里跟Java的ArrayList,有add方法的类是哪个
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala里跟Java的ArrayList,有add方法的类是哪个相关的知识,希望对你有一定的参考价值。
参考技术A Scala相对于Java的优势是巨大的。熟悉Scala之后再看Java代码,有种读汇编的感觉……如果仅仅是写Spark应用,并非一定要学Scala,可以直接用Spark的Java API或Python API。但因为语言上的差异,用Java开发Spark应用要罗嗦许多。好在带lambda的Java 8出来之后有所改善。
在Spark应用开发上,学Scala主要好处有二:
开发效率更高,代码更精简;
使用Spark过程中出现异常情况,在排查时如果对Spark源码比较熟悉,可以事半功倍。 参考技术B 要实现动态添加元素的数组,在Scala中使用ArrayBuffer
使用方式:
val b = ArrayBuffer[Int]()
b+=1
//在尾端添加元素
//ArrayBuffer(1)
b+=(2,3,4,5)
//在尾端添加多个元素
//ArrayBuffer(1,2,3,4,5)
b++=ArrayBuffer(8,19,20)
//可以使用++-操作符追加任意集合
//ArrayBuffer(1,2,3,4,5,8,19,20)
b.trimEnd(3)
//在尾部删除3个元素
//ArrayBuffer(1,2,3,4,5)
b.insert(2,6)
//在下标2之前插入6
//ArrayBuffer(1,2,6,3,4,5)
b.insert(3,7,8,9)
//在下标3之前插入7,8,9
//ArrayBuffer(1,2,6,7,8,9,3,4,5)
b.remove(2)
//删除下标为2的元素
//ArrayBuffer(1,2,7,8,9,3,4,5)
b.remove(2,3)
//从下标为2的元素开始,删除3个元素
//ArrayBuffer(1,2,3,4,5)
又由于Scala和Java使用相同JVM,那么可以调用ArrayList
val a= new util.ArrayList[(String, Double, Double, Double)]()
a.add((A, B, C, C)) 参考技术C Scala不是很清楚,但是Java里的ArrayList类是有add方法的 参考技术D ArrayList.add(); 第5个回答 2014-11-19
scala没有ArrayList。
Scala数组操作
数组操作
- 初始化固定长度的数组
// 初始化长度为10的数组
val array = new Array[Int](10)
// 初始化创建含有hello与Scala的数组
val s = Array("hello","scala")
- 创建可变的数组(类似java的集合)
Scala中创建长度可变的数组,类似与java中的ArrayList一样Scala提供了ArrayBuffer,下面是ArrayBuffer的用法:
// 创建集合等同于下面的new ArrayBuffer[Int]()
val b = ArrayBuffer[Int]()
new ArrayBuffer[Int]()
// 集合添加元素类似与java中的list.add()多次调用添加函数
b += (1, 2, 3, 4, 5, 6)
// 可以追加新的集合元素类似java中的list.addAll()
b ++=Array(7,8,9,10)
// 移除前//5个元素
b.trimStart(5)
/**
* 数组尾部删除或者添加元素是非常快,但是中间 * 插入元素或者移除元素,操作较慢
*/
val c = new ArrayBuffer[Int]()
c+=(1,2,3)
// 在索引2处插入元素6
c.insert(2,6)// ArrayBuffer(1, 2, 6, 3)
// 删除索引为2元素
c.remove(2)
// 删除索引1后一个元素
c.remove(1,1)
有时候创建元素,不知道存储多少元素可以创建数组缓存ArrayBuffer,然后调用toArray方法将缓冲区间转为Array(类似于java中StringBuffer.toString方法)
- 遍历数组和数组缓冲
val a = ArrayBuffer[Int]()
a+=(1,2,3,4,5,6)
//遍历数组(变量i取值从0到a.length-1)
for(i<- 0 until a.length) println(a(i))
println(a(i)
// 遍历偶数下标索引元素
for(i<- 0 until (a.length,2)) println(a(i))
// 倒着遍历索引
for(i<- (0 until a.length).reverse) println(a(i))
// yield元素填充
val result =for (e <- list) yield e *2
// 数组转换
val list = Array(1, 2, 3, 4)
// yield元素填充
val result = for (e <- list) yield e * 2
println(result.toBuffer)
// 舍弃偶数元素
val res = for (e <- list if e % 2 == 0) yield e
println(res.toBuffer)
// 也可以使用函数式编程使用filter和Map
val req = a.filter(_ % 2 == 0).map(2 * _)
}
- Scala的常用算法
Scala中有计算求和和排序
val list = Array(1, 2, 3, 4)
// 求和,求数组最大值,排序,而排序并不会影响原有的数组
println(list.sum, list.max,list.sorted.toBuffer)
方法 | 方法描述 |
---|---|
def append(elems:A*):Unit | 方法接受多个类型为A的元素,例如b.append(1,2)将对b追加2个元素 |
def count(p:(A)=>Boolean):Int | 方法接受一个布尔值表达式,例如a.count(_>0)将会统计多个正数 |
方法demo
val list = Array(8, 5, 1, 2, 3, 4)
val bs = list.sorted.toBuffer
bs.append(1,2)
println(bs)
// 统计集合大于4的元素个数
println( bs.count(_ > 4))
以上是关于Scala里跟Java的ArrayList,有add方法的类是哪个的主要内容,如果未能解决你的问题,请参考以下文章