Scala排序

scala-sorts: 探索Scala中的排序算法实战 空间复杂度指的是算法在运行过程中临时占用存储空间的大小。它同样不依赖于具体的硬件环境,是一种算法占用空间资源的度量标准。空间复杂度也通常用大O表示法来表示,如O(1)表示算法占用常数空间,O(n)表示占用线性空间等。Scala语言因其简洁性和表达力,在处理集合和数据流时显得尤为高效。Scala内置了一系列的排序方法,能够满足大多数排序需求。本章节将深入探讨Scala标准库中的排序函数,分析其排序方法的参数和选项,以及如何利用Scala的特性来实现自定义排序规则。 阅读详情

排序-简单版

package com.ws.order

class OrderBean(val name:String,val age:Int,val fv:Double) extends Ordered[OrderBean] with Serializable {
  override def compare(that: OrderBean): Int = {
    if(this.fv == that.fv){
      this.age.compareTo(that.age)
    }else{
      - this.fv.compareTo(that.fv)
    }
  }

  override def toString = s"OrderBean($name, $age, $fv)"
}}

对象排序

package com.ws.order

import org.apache.spark.{SparkConf, SparkContext}


/**
 * 排序,如果是Bean 那么可以实现 Comparator、Ordered、Ordering 三个接口之一
 * 直接调用sortBy即可
 */
object Order1 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("Topn1").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val value = sc.parallelize(Array[OrderBean](new OrderBean("zs", 18, 99.2), new OrderBean("ls", 28, 99.2), new OrderBean("ww", 31, 100)))
    val value1 = value.sortBy(t => t)
    println(value1.collect().toBuffer)
    sc.stop()
  }
}

元组排序

package com.ws.order

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}


/**
 * 如果是元组,可以直接再t中指定排序规则
 */
object Order2 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("Topn1").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val value: RDD[(String, Int, Double)] = sc.parallelize(List(("zs", 18, 99.5), ("ls", 20, 99.5), ("zs", 28, 100)))
    val value1: RDD[(String, Int, Double)] = value.sortBy(x => (-x._3, x._2, x._1))
    println(value1.collect().toBuffer)
    sc.stop()
  }
}

如果是元组,我们不需要将元组转换成对象,然后再按照对象去排序,我们直接可以在sortBy中 将原来的元组转换成对象去排 这个很重要。

反过来也一样,如果一个对象没有指定排序规则,我们可以把对象解析成元组,利用元组的默认排序规则去排(先排第一个,再排第二个) 

排序-隐式转换 

package com.ws.order

case class OrderBeanSimple(name:String, age:Int, fv:Double){
  override def toString = s"OrderBean($name, $age, $fv)"
}
package com.ws.order

import org.apache.spark.{SparkConf, SparkContext}


/**
 * 排序,如果是Bean实现 Comparator、Ordered、Ordering 方法,那么bean就和排序规则耦合在一起了,
 * 如果我们用同一个bean,但是需要不同的排序规则进行排序,那么我么可以把排序规则抽取出来,用隐式转换修饰
 * 导入不同的排序方法,就可以实现不同的排序
 */
object Order3Implicit {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("Topn1").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val value = sc.parallelize(Array[OrderBeanSimple](OrderBeanSimple("zs", 18, 99.2), OrderBeanSimple("ls", 28, 99.2), OrderBeanSimple("ww", 31, 100)))
    import OrderContext.sortByAge
    val value1 = value.sortBy(t => t)
    println(value1.collect().toBuffer)
    sc.stop()
  }
}

 

c# 开发串口调试助手 Visual Studio 2019 串口调试助手是用于在开发、测试和调试串口通信应用程序时进行串口数据的监视和交互的工具。 阅读详情

相关推荐

PID调参避坑指南:为什么你的电机总是震荡?从比例带积分到微分实战解析

本文针对电机控制中常见的震荡问题,提供了一份PID调参实战指南。文章深入解析了比例(P)、积分(I)、微分(D)三个参数对系统稳定性的影响,揭示了比例增益过大是导致震荡的关键原因之一,并给出了从纯比例调试到引入积分、微分的系统化调参流程与避坑要点,帮助工程师快速实现电机平稳、精准的控制。

weixin_28223453的博客 459

Spark学习过程中积累的知识点

Spark使用scala语言编写的,scala是面向函数编程 1.Spark的Collect是一个action算子,作用:以数组的形式返回数据集的所有元素 2.Spark的RDD(弹性分布式数据集) 粗颗粒的:将转换规则和数据处理的逻辑进行了封装,实际上是不保存数据,他代表一个不可变、可分区、里面的元素可并行计算的集合。(会进行分区,为了去并行计算) 3.Spark—算子(operate):...

weixin_45034355的博客 308

【Java】利用反射执行Spring容器Bean指定的方法,支持多种参数自动调用

目录 使用情景 目的 实现方式 前提: 思路 核心类 测试方法 使用情景 将定时任务录入数据库(这样做的好处是定时任务可视化,也可以动态修改各个任务的执行时间),通过反射执行对应的方法; 配合Netty实现简单的HTTP请求处理框架 其他需要使用反射执行Spring方法的业务亦可 目的 很多文章都提到了反射,但是对于方法参数处理这一块都是明确了类型,不支持按照实际参数动态转换,而本篇文章提供了一个思路怎么做到方法参数的动态调用。 大家也可以...

ITjianshuzhai的博客 2335

scala实现各种排序算法

1、冒泡排序 object BubblingSort { /** * 比较相邻元素的大小,对于每次循环,按排序的规则把最值移向数组的一端,同时循环次数依次减少 * @param args */ def main(args: Array[String]): Unit = { // val testData = new ArrayBuffer[Int] // testData += 10;testData += 101;testData += 75;testDat

嘻哈吼嘿呵的博客 715

网络可视化工具netron详细安装流程

netron安装目录1.netron 简介2.不同操作系统下的安装使用方式2.1 在线版本:只要有浏览器就可以2.2 不同操作系统安装使用3.netron支持的网络框架4.netron测试演示 1.netron 简介 在实际的项目中,经过会遇到各种网络模型,需要我们快速去了解网络结构。如果单纯的去看模型文件,脑海中很难直观的浮现网络的架构。 这时,就可以使用netron可视化工具,可以清晰的看到每一层的输入输出,网络总体的架构,而且支持各种不同网络框架,简单好用。 2.不同操作系统下的安装使用方式 2.1

江南研习社 12万+

华北理工大学以升实验班蓝桥杯选拔赛题解

文章目录华北理工大学以升实验班蓝桥杯选拔赛题解A:期末考试题目描述题目讲解代码B:月份题目描述题目讲解代码C:打饭题目描述题目讲解代码D : 正弦波信号题目描述题目讲解代码E : 亲爱的长方形题目描述题目讲解代码F:挖金子题目描述题目讲解代码G : 金金的游戏题目描述题目讲解代码H : 区间和题目描述题目讲解代码详细视频讲解请关注华北理工大学b站账号。 华北理工大学以升实验班蓝桥杯选拔赛题解 A:期末考试 题目描述 Description 期末考试过去许多天了,如今成绩都出来了,那么现在让我们对成绩我分个类

Qq1739206233的博客 1129

scala的三个排序方法

sorted 对一个集合进行自然排序,通过传递隐式的Ordering 无需参数 def sorted[B >: A](implicit ord: Ordering[B]): Repr scala> val a = List(10, 5, 8, 1, 7).sorted a: List[Int] = List(1, 5, 7, 8, 10) scala> val b = List("banana", "pear", "apple", "orange").sorted b: List[

鸭梨的博客 3218

【AI智能体】全场景AI智能体工作台WorkBuddy实战操作详解

全场景AI智能体工作台WorkBuddy实战操作详解

congge 5527

scala 的排序

排序的本质, 就是比较元素的大小 数字类型的可以直接进行比较, 对象类型的, 需要自定义比较规则 Java 中对对象进行排序, 需要继承/实现 Comparable、comparator, 重写对应方法 scala 的排序支持 3 中算子: sorted sortBy sortWith sorted sorted: 对 List<对象> 进行 sorted 的第一种写法 实现过程...

Java_Road_Far的博客 919

gseapy python包GO、KEGG富集(注释)分析

文档案例参考:https://gseapy.readthedocs.io/en/latest/gseapy_example.html#Over-representation-analysis-by-Enrichr-web-services安装:建议安装最新版(这里安装的1.04):https://github.com/zqfang/GSEApy/releases。

weixin_42357472的博客 3612

为什么我的OpenClaw安装后无法启动?Gateway服务故障排查全攻略

OpenClaw是一款功能强大的自动化工具,但其安装和运行依赖于多个服务组件,其中Gateway服务是核心组件之一。如果Gateway服务无法启动,整个OpenClaw系统将无法正常运行。本文将详细介绍OpenClaw安装后无法启动的常见原因及故障排查方法,帮助你快速定位并解决问题。

一键难忘的博客 4625

scala的所有排序

集合排序方式 欢迎大家交流不同意见和想法!!!!!!! 1:集合单独排序: 对象.sort() 或者直接存在sortedset集合中 val list = List(45, 23, 23, 5, 3, 55) val sted = list.sorted val sortby = list.sortBy(t =&gt; t) val set = mutable.SortedSet(2, 4, 1...

weixin_43930865的博客 819

Ardupilot二次开发(二):自定义mavlivk消息

在下面的文件添加自定义消息的xml定义然后编译固件,会生成相应的消息头文件。

超维空间科技的博客 2314

scala实现简单排序

使用scala实现冒泡、选择、插入排序

a805814077的博客 1359

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

scala快速排序

scala快速排序 排序原理 1、找一个基准key 2、拿该key开始从后往前遍历,判断该key是否大于arr(j),如果key<=arr(j),则j往前移,反之则交换,然后i往后移,如果key>=arr(i),则i往后移,反之则交换,同理,一直到i==j 例子:10,9,8,7,6,5,4,3,2,1,0 下面是每一步的输出结果: 0 9 8 7 6 5 4 3 2 1 10 0 9 8 7 6 5

鸿爸爸 496

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Scala中的集合排序

Scala中的集合排序在scala中,排序不再像java中的那么复杂,除了Map之外,其他的集合类型都可以使用自己的排序方法,排序方法主要有三个:1、sorted2、sortWith3、sortBy4、如果是任何类型调用上述三中方法时候都不会对源数据进行修改,而是返回一个新的集合。但是如果是使用的数组,那么可以使用scala.util.Sorting包中的排序方法来对源数据修改,并且不会返回新的数...

zp1220的专栏 900

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Scala 常用Sort排序

Scala 使用过程中经常要要用到排序模块,自带的方法有sorted,sortBy,sortWith,同时也提供了接口和类,例如Ordering,Ordered,Comparable,Comparator等,下面就盘一下他们的基本用法: 一.sorted 1.sorted-Default sorted 是基于Ordering 排序 /** Sorts this $coll according to an Ordering. * * The sort is stable. T.

BITDDD小栈 3308

Scala实现堆排序

Scala实现堆排序 相关内容 & 算法详解 堆排序(递归)C++实现 环境 CentOS Linux release 8.1.1911 (Core) Scala 2.13.3 (Java HotSpot(TM) 64-Bit Server VM, Java 14.0.2) 算法思路 在另一篇博客堆排序(递归)C++实现中已详细叙述并用C++实现,此处只是使用Scala进行简单复现,均基于算法导论提供的思想,算法思路便不再赘述 实现代码 object HeapSort { var array

qq_44486439的博客 559

Scala之二次排序

package com.uplooking.bigdata.core.p3   import com.uplooking.bigdata.domain.ScalaSecondSort import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext}   import scala.r

tangshiweibbs的专栏 2738

scala语言实现排序

(1)冒泡排序: package cn.itcast.sort //冒泡排序 class BubbleSort { def main(args: Array[String]): Unit = { val list = List(3, 12, 43, 23, 7, 1, 2, 0) println(sort...

Sunshine_2211468152的博客 779

scala对文件进行排序

1、利用scala编写对文件进行排序: 下面是要排序的两个文件的内容: file1: 234 33 34 90 100 file2: 10 34 23 23 100 编写排序的程序: import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ import org.apache.spark.SparkConf import org.apache.spark.HashPartitioner /** * @au

我在深圳的这些日子的博客 768

Scala 函数排序

Scala 函数排序 文章目录Scala 函数排序基于单集合单字段的排序基于元组多字段的排序基于类的排序(2)sortWith的实现方法     排序规则:年龄一样,按名字降序排,否则按年龄升序排。 排序方法在实际的应用场景中非常常见,Scala里面有三种排序方法,分别是: sorted,sortBy ,sortWith。 (1)sorted     对一个集合进行自然排序,通过传递隐式的Ordering。 (2)sortBy     对一个属性或多个属性进行排序,通过它的类型。 (3)sortWith

Deng872347348的博客 1182

scala 排序_Scala地图和排序

scala 排序 这是博客文章,最初写于2014年5月中旬。我似乎也每3个月左右编写一次此代码,然后我忘记了。 因此,我需要一个触发器来准确记住Scala Maps的工作方式并按键对条目进行排序。 让我们来看看Scala REPL。 Welcome to Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_...

168

scala集合排序_如何对Scala集合进行排序?

scala集合排序The collection includes all those data structures that are used to store multiple elements or collections of elements like Array, List, Set, Vector, etc. 集合包括所有用于存储多个元素或元素集合(如数组,列表,集合,向量等)的...

cumtv80668的专栏 1603

Scala实现快速排序

Scala实现快速排序(算法导论) 相关内容 快速排序C++实现 Leetcode215. Kth Largest Element in an Array(基于快速排序及其划分算法) 算法思路 快速排序基于分治策略,通过划分算法,递归地对左右子序列进行划分,直到划分到长度为1的子序列回溯,经过logn次划分,即可得到有序序列 def quickSort(start : Int, end : Int) : Unit = { if (start < end) { var pivot :

qq_44486439的博客 809

Scala中的集合排序总结

在scala中,排序不再像java中的那么复杂,除了Map之外,其他的集合类型都可以使用自己的排序方法,排序方法主要有三个: (1)sorted:使用默认排序 (2)sortBy(_):需要指定根据哪一个项进行排序 (3)sortWith((String,String)=>Boolean):需要传入一个匿名函数来说明排序规则 比如list可以直接调用上述三中方法,而map的话就可以转...

灼灼其华的博客 1275
上一篇: scala复习
下一篇: spark流程
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值