首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何Scala中集合(Collections)进行排序

文章标题: 《如何Scala中集合(Collections)进行排序》 本文链接: http://www.iteblog.com/archives/1171 下面是一系列对 ScalaLists...、Array进行排序例子,数据结构定义如下: // data structures working with val s = List( "a", "d", "F", "B", "e") val n...大小写敏感搜索 我们可以用 ScalasortWith来自定义我们对大小写敏感排序函数。...上面的排序并不对原始数据产生影响,排序结果被存储到别的变量中,如果你元素类型是数组,那么你还可以对数组本身进行排序,如下: scala> val a = Array(2,6,1,9,3,2,1,...在scala.util.Sorting下面还有个stableSort函数,它可以对所有Seq进行排序,返回结果为Array。

1.8K50

Python和Scala定义变量

每一门编程语言背后都代表着某一种特别的哲学,由这一哲学进而设计出属于这门程序语言语法,Python和Scala也不例外。我们从变量定义去一窥Python和Scala设计哲学不同。...在Scala里面变量可以分为两种,分别是var和val,var在它生命周期是可以不断被赋值,而val一旦定义便无法改变。...但是如果我们定义a是val,我们再赋值a=2时,Scala会抛出错误。让我们再看看Python变量,Python变量都是Scalavar,在它生命周期都是可以被赋值。...首先先简单定义一个val变量 scala> val a = 1 a: Int = 1 而它完整定义a应该是这样: scala> val a:Int = 1 a: Int = 1 前文也说过Scala...是一门静态语言,但是我们却不需要像C或者Java一样必须预先定义数据类型(比如上例中Int类型),可以把数据类型定义交由Scala编译器。

53720
您找到你想要的搜索结果了吗?
是的
没有找到

Scala里面的排序函数使用

排序方法在实际应用场景中非常常见,Scala里面有三种排序方法,分别是: sorted,sortBy ,sortWith 分别介绍下他们功能: (1)sorted 对一个集合进行自然排序,通过传递隐式...(3)sortWith 基于函数排序,通过一个comparator函数,实现自定义排序逻辑。...例子一:基于单集合单字段排序 结果: 例子二:基于元组多字段排序 注意多字段排序,使用sorted比较麻烦,这里给出使用sortBy和sortWith例子 先看基于sortBy实现: 结果:...再看基于sortWith实现: 从上面可以看出,基于sortBy第二种实现比较优雅,语义比较清晰,第三种灵活性更强,但代码稍加繁琐 例子三:基于类排序 先看sortBy实现方法 排序规则:先按年龄排序...,如果一样,就按照名称降序排 结果: 再看sortWith实现方法: 结果: 总结: 本篇介绍了scala里面的三种排序函数,都有其各自应用场景: sorted:适合单集合升降序 sortBy:适合对单个或多个属性排序

1.6K40

Python和Scala函数定义

之前文章我们简单地看了下Scala和Python变量定义,再来看看如何将代码块组织在一起变成一个函数吧。...先看看函数如何定义Scala版本 def sum(x:Int):Int = { if (x == 1) 1 else x + sum(x-1) } 或者是 def sum(x:Int):...: if (x == 1): return 1 else: return x + sum(x-1) Scala和Python常规函数定义都由def开始,接下来是函数名...这个例子中sum接受了Int类型x。在sum参数列表后面会补充上Scala是以冒号开头,Python是以->开头函数返回值数据类型。这一部分Scala和Python还是大致相同。...,而Python函数返回值必须要加上return,而且并不能像Scala那样可以进一步写成一行语句,因为lambda定义不能定义复杂控制流程。

63620

Scala定义类型标记

Scala定义类型标记 Scala中有很多千奇百怪符号标记,看起来是那么独特,就像是一杯dry martini...好像黑夜中萤火虫,那么耀眼,那么出众。...好了言归正传,这一篇文章我们会讲一下Scala定义类型标记,通过自定义类型标记可以将this指向额外类型期望。...1和2,位置1定义了一个自定义类型标记,它说明了两个意思: self指向了this self是S类型实例 在2中,我们直接传入self就行了,这里self也可以换做其他字面量。...Object继承SubjectObserver, 并在它内部再定义两个class实现相应trait。...看下我们如何给S和O赋值: type S = ObservableButton // type O = Observer 现在一个观察者模式就完成了。

82720

简单定义Python和Scala类和对象

我们以书籍为例,先看看如何构建一个类: Scala: class Book{ //类定义 } Python: class Book: pass#类定义 Scala类使用了{}将整个类定义包含起来...,而Python类通过缩进符来包含整个类定义。...在Scala使用new Book来创建一个实例,而Python使用Book()来实例(实际上是__new__语法糖)。我们可以在类定义了加上一些好玩东西,比如属性和实例。 a = Book....初始化: 书一般都会有书名,假设书名可以区分书唯一性,在创建实例时必须要给这个实例一个书名,那么如何给Book这个类添加书名这个属性: Scala: object Test{ def main(args...Scala定义里面是不允许存在静态方法,所以Scala提供了object这种单例对象,单例对象和类定义很像,但是单例对象不需要实例化,单例对象本身就是一等对象,单例对象名称可以理解为附加在对象名称

54710

如何使用Scalaexists函数

在本文中,我们将演示如何Scala集合上使用exists函数,该函数适用于Scala可变(Mutable)和不可变(Immutable)集合。...Scala文档中exists函数定义如下: def exists(p: (A) ⇒ Boolean): Boolean exists函数是IterableLike特质(trait)一个成员。...示例 1、如何初始化甜甜圈序列(a Sequence of donuts): 下面的代码演示了如何初始化一个包含String类型元素甜甜圈序列: println("Step 1: How to initialize...exists函数并通过步骤3谓词函数查找元素Plain Donut: 下面的代码展示了如何调用exists方法并传递步骤3中值谓词函数,以查找甜甜圈序列中是否存在普通甜甜圈元素: println(...exists函数并通过步骤5中谓词def函数查找元素Plain Donut: 下面的代码展示了如何调用exists方法并通过步骤5中def谓词函数查找甜甜圈序列中是否存在普通甜甜圈元素: println

1.9K40

Scalamap实现key和value排序及各种排序比较等知识讨论

问题导读 1.map能否直接排序? 2.如何转换,才能排序? 3.排序结果可以存储在哪两个集合中? 4._*如何使用? 5.排序函数中,哪个可以进行升序和降序排列? 6.他们排序性能如何?...如过想要对一个map排序,该如何实现。 首先给一个不可变map [Scala] 纯文本查看 复制代码 ?...sort函数,结果在一个新已经排序map中,输出结果需要一个新变量。...._2):_*) LinkedHashMap 也存储排序数据,如下 [Scala] 纯文本查看 复制代码 ?...ListMap(x) 另外一种方式, 自定义函数,使用可变参数,_*它是如何使用。下面printAll ,需要一个参数,和一个可变参数String类型。

3.6K80

快速排序原理JAVA和Scala实现-函数式编程简洁演示

高快省排序算法 有没有既不浪费空间又可以快一点排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。...快速排序之所比较快,因为相比冒泡排序,每次交换是跳跃式。每次排序时候设置一个基准点,将小于等于基准点数全部放到基准点左边,将大于等于基准点数全部放到基准点右边。...因此快速排序最差时间复杂度和冒泡排序是一样都是O(N2 ),它平均时间复杂度为O(NlogN)。其实快速排序是基于一种叫做“二分”思想。我们后面还会遇到“二分”思想,到时候再聊。...C语言快速排序实现 #include int a[101],n;//定义全局变量,这两个变量需要在子函数中使用 void quicksort(int left,int right...[beg] ^ array[j]; array[j] = array[beg] ^ array[j]; } return j; } } Scala

1.1K50

java中排序(自定义数据排序)--使用Collectionssort方法

排序:将一组数据按相应规则 排列 顺序 1.规则:       基本数据类型:日常大小排序。 引用类型: 内置引用类型(String,Integer..),内部已经指定规则,直接使用即可。...日期:根据日期长整型数比较。 自定义引用类型,需要按照业务规则排序。...有两种方式,分别如下所述:     当引用类型内置排序方式无法满足需求时可以自己实现满足既定要求排序,有两种方式: 第一种: 自定义业务排序类:新建一个业务排序类实现java.util.Comparator...下compare 接口,然后使用java提供Collections调用排序方法,并将此业务排序类作为参数传递给Collectionssort方法,如下:                (1)新建一个实体类...(实现java.util.Comparator接口),编写符合业务要求排序方法,如下是按照价格排序业务类(降序) package top.wfaceboss.sort.refType2; /**

4.4K30
领券