scala的多种集合的使用(4)之列表List(ListBuffer)的操作
1.List列表的创建和添加元素
1)最常见的创建list的方式之一。
- scala> val list = 1 :: 2 :: 3 :: Nil
- list: List[Int] = List(1, 2, 3)
2)最常见的创建list的方式之一。
- scala> val list = List(1,2,3)
- list: List[Int] = List(1, 2, 3)
3)集合混合类型组成。
- scala> val list = List(1,2.0,33D,4000L)
- list: List[Double] = List(1.0, 2.0, 33.0, 4000.0)
4)集合混合类型组成,可以有自己控制。下面的例子的集合保持了原有集合的类型。
- scala> val list = List[Number](1,2.0,33D,4000L)
- list: List[Number] = List(1, 2.0, 33.0, 4000)
5)range创建和填充集合。
- scala> val list = List.range(1,10)
- list: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
6)fill创建和填充集合。
- scala> val list = List.fill(3)("hello")
- list: List[String] = List(hello, hello, hello)
7)tabulate创建和填充集合。
- scala> val list = List.tabulate(5)(i => i * i)
- list: List[Int] = List(0, 1, 4, 9, 16)
8)将集合转化为List的形式。
- scala> val list = collection.mutable.ListBuffer(1,2,3).toList
- list: List[Int] = List(1, 2, 3)
9)将集合转化为List的形式。
- scala> "hello".toList
- res41: List[Char] = List(h, e, l, l, o)
10)创建可变的list,方法是使用ListBuffer,再将ListBuffer转化为List。
- scala> import scala.collection.mutable.ListBuffer
- import scala.collection.mutable.ListBuffer
- scala> var fruits = new ListBuffer[String]()
- fruits: scala.collection.mutable.ListBuffer[String] = ListBuffer()
- scala> fruits += "apple"
- res42: scala.collection.mutable.ListBuffer[String] = ListBuffer(apple)
- scala> fruits += "orange"
- res43: scala.collection.mutable.ListBuffer[String] = ListBuffer(apple, orange)
- scala> fruits += ("banana","grape","pear")
- res44: scala.collection.mutable.ListBuffer[String] = ListBuffer(apple, orange, banana, grape, pear)
- scala> val fruitsList = fruits.toList
- fruitsList: List[String] = List(apple, orange, banana, grape, pear)
11) 使用::方法在列表前添加元素。
- scala> var list = List(2)
- list: List[Int] = List(2)
- scala> list = 1 :: list
- list: List[Int] = List(1, 2)
- scala> list = 9 :: list
- list: List[Int] = List(9, 1, 2)
2.从List(ListBuffer)中删除元素
1)List是不可变的,不能从中删除元素,但是可以过滤掉不想要的元素,然后将结果赋给一个新的变量。
- scala> val list = List(4,5,2,1,3)
- list: List[Int] = List(4, 5, 2, 1, 3)
- scala> val newList = list.filter(_ > 2)
- newList: List[Int] = List(4, 5, 3)
2)像这样反复的操作结果赋给变量的方式是可以避免的,通过声明变量var,然后将每次操作的结果返回给该变量。
- scala> var list = List(5,2,3,4,1)
- list: List[Int] = List(5, 2, 3, 4, 1)
- scala> list = list.filter(_ > 2)
- list: List[Int] = List(5, 3, 4)
3)如果列表经常变动,使用ListBuffer是一个不错的选择。ListBuffer是可变的,因此可以使用可变序列的所有方法从中删除元素。
- import scala.collection.mutable.ListBuffer
- scala> val x = ListBuffer(1,2,3,4,5,6,7,8,9)
- x: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9)
- //可以按值每次删除一个元素:
- scala> x -= 5
- res45: x.type = ListBuffer(1, 2, 3, 4, 6, 7, 8, 9)
- //可以一次删除两个或者更多的元素:
- scala> x -= (2,3,4)
- res46: x.type = ListBuffer(1, 6, 7, 8, 9)
- //可以按位置删除元素:
- scala> x.remove(0)
- res47: Int = 1
- scala> x
- res48: scala.collection.mutable.ListBuffer[Int] = ListBuffer(6, 7, 8, 9)
- //remove可以从定始位置删除指定数量的元素:
- scala> x.remove(1,3)
- scala> x
- res50: scala.collection.mutable.ListBuffer[Int] = ListBuffer(6)
- //可以用--=的方法从指定的集合中删除元素。
- scala> val x = ListBuffer(1,2,3,4,5,6,7,8,9)
- x: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4, 5, 6, 7, 8,9)
- scala> x --= Seq(1,2,3)
- res51: x.type = ListBuffer(4, 5, 6, 7, 8, 9)
3.列表的合并或者连接
1)使用++方法合并两个列表
- scala> val a = List(1,2,3)
- a: List[Int] = List(1, 2, 3)
- scala> val b = List(4,5,6)
- b: List[Int] = List(4, 5, 6)
- scala> val c = a ++ b
- c: List[Int] = List(1, 2, 3, 4, 5, 6)
2)使用:::合并两个列表
- scala> val a = List(1,2,3)
- a: List[Int] = List(1, 2, 3)
- scala> val b = List(4,5,6)
- b: List[Int] = List(4, 5, 6)
- scala> val c = a ::: b
3)使用concat合并两个列表
- scala> val a = List(1,2,3)
- a: List[Int] = List(1, 2, 3)
- scala> val b = List(4,5,6)
- b: List[Int] = List(4, 5, 6)
- scala> val c = List.concat(a,b)
- c: List[Int] = List(1, 2, 3, 4, 5, 6)
scala的多种集合的使用(4)之列表List(ListBuffer)的操作的更多相关文章
- scala的多种集合的使用(5)之数组Array(ArrayBuffer)的操作
1.创建和更新数组的不同方式 1)定义一个数组的初始大小和类型,随后填充值. scala> val array = new Array[String](3) array: Array[Strin ...
- scala的多种集合的使用(6)之映射Map的操作方法
1.创建映射 1)创建不可变的映射 scala> val status = Map(1 -> "a",2 -> "b") status: sc ...
- scala的多种集合的使用(1)之集合层级结构与分类
一.在使用scala集合时有几个概念必须知道: 1.谓词是什么? 谓词就是一个方法,一个函数或者一个匿名函数,接受一个或多个函数,返回一个Boolean值. 例如:下面方法返回true或者false, ...
- scala的多种集合的使用(3)之遍历集合的方法
遍历集合的方法 1.用foreach循环遍历一个集合 foreach接收一个函数作为参数.定义的函数应该接收一个元素作为输入参数,然后不要返回任何的东西.输入的参数的类型应该匹配集合中的类型.随着fo ...
- scala的多种集合的使用(2)之集合常用方法
一.常用的集合方法 1.可遍历集合的常用方法 下表列出了Traverable在所有集合常用的方法.接下来的符号: c代表一个集合 f代表一个函数 p代表一个谓词 n代表一个数字 op代表一个简单的操作 ...
- scala的多种集合的使用(8)之队列和栈的操作方法
1.使用队列 队列是一种那个先进先出的队列.1)创建一个队列. scala> import scala.collection.mutable.Queue import scala.collect ...
- scala的多种集合的使用(7)之集Set的操作方法
1.给集添加元素 1)用+=.++=和add给可变集添加元素. scala> var set = scala.collection.mutable.Set[Int]() set: scala.c ...
- Scala 运算符和集合转换操作示例
Scala是数据挖掘算法领域最有力的编程语言之一,语言本身是面向函数,这也符合了数据挖掘算法的常用场景:在原始数据集上应用一系列的变换,语言本身也对集合操作提供了众多强大的函数,本文将以List类型为 ...
- Programming In Scala笔记-第十七章、Scala中的集合类型
本章主要介绍Scala中的集合类型,主要包括:Array, ListBuffer, Arraybuffer, Set, Map和Tuple. 一.序列 序列类型的对象中包含多个按顺序排列好的元素,可以 ...
随机推荐
- Python爬虫8-ajax爬取豆瓣影榜
GitHub代码练习地址:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac12_ajax.py 了解ajax 是一种异步请 ...
- dubbo-springboot入门级demo
1. dubbo-springboot入门级demo 1.1. 前言 最后一个做运维的朋友和我提起,他们公司想做个dubbo灰度发布的功能,而这个功能落到了他头上.在我的印象里,dubbo应该可以通过 ...
- 【Spark篇】---SparkSql之UDF函数和UDAF函数
一.前述 SparkSql中自定义函数包括UDF和UDAF UDF:一进一出 UDAF:多进一出 (联想Sum函数) 二.UDF函数 UDF:用户自定义函数,user defined functio ...
- 死磕 java集合之ConcurrentHashMap源码分析(三)
本章接着上两章,链接直达: 死磕 java集合之ConcurrentHashMap源码分析(一) 死磕 java集合之ConcurrentHashMap源码分析(二) 删除元素 删除元素跟添加元素一样 ...
- 推荐系统(Recommendation system )介绍
前言 随着电子商务的发展,网络购物成为一种趋势,当你打开某个购物网站比如淘宝.京东的时候,会看到很多给你推荐的产品,你是否觉得这些推荐的产品都是你似曾相识或者正好需要的呢.这个就是现在电子商务里面的推 ...
- 知识小罐头08(tomcat8启动源码分析 上)
前面好几篇都说的是一个请求是怎么到servlet中的service方法的,这一篇我们来看看Tomcat8是怎么启动并且初始化其中的组件的? 相信看了前面几篇的小伙伴应该对Tomcat中的各个组件不陌生 ...
- 杭电ACM2020--绝对值排序
输入n(n<=100)个整数,按照绝对值从大到小排序后输出.题目保证对于每一个测试实例,所有的数的绝对值都不相等. Input 输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整 ...
- Java多线程知识整理
多线程 1. 多线程基础 多线程状态转换图 普通方法介绍 yeild yeild,线程让步.是当前线程执行完后所有线程又统一回到同一起跑线.让自己或者其他线程运行,并不是单纯的让给其他线程. join ...
- 操作系统,时间片轮转算法的C语言实现Round Robin
#include "windows.h" #include <conio.h> #include <stdlib.h> #include <fstre ...
- vue实例化
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...