首页 > 其他分享 >Dart对集合数组进行降序排列的方法

Dart对集合数组进行降序排列的方法

时间:2023-08-20 21:31:37浏览次数:39  
标签:sort 降序 List Dart numbers 数组 列表 排序

在Dart中,你可以使用Listsort()方法对集合数组进行排序。要按降序排列,可以在排序方法中指定一个自定义的比较函数。以下是一种常见的降序排序方法:

List<int> numbers = [3, 1, 4, 2, 5];
numbers.sort((a, b) => b.compareTo(a));
print(numbers); // [5, 4, 3, 2, 1]

在上述示例中,我们有一个整数类型的列表 numbers,然后我们使用sort()方法对其进行排序。使用自定义的比较函数 (a, b) => b.compareTo(a),其中 b.compareTo(a) 返回一个负数、零或正数来指示 b 应该排在 a 之前、同时、或之后。这样就实现了按降序排序。

运行上述代码会输出 [5, 4, 3, 2, 1],说明列表已按降序排列。

你还可以使用箭头函数的缩写方式进一步简化代码:

List<int> numbers = [3, 1, 4, 2, 5];
numbers.sort((a, b) => b - a);
print(numbers); // [5, 4, 3, 2, 1]

在这种情况下,b - a 的结果将直接用作比较函数的返回值。

请注意,上述排序方法会改变原始的列表顺序。如果你想创建排序后的新列表而不改变原始列表,可以通过List类的toList()方法创建一个副本,然后对副本进行排序:

List<int> numbers = [3, 1, 4, 2, 5];
List<int> sortedNumbers = List.from(numbers)..sort((a, b) => b.compareTo(a));
print(sortedNumbers); // [5, 4, 3, 2, 1]
print(numbers); // [3, 1, 4, 2, 5] (原始列表顺序未改变)

在这个示例中,我们使用 List.from() 方法创建了一个 sortedNumbers 的副本来进行排序,而原始的 numbers 列表保持不变。

标签:sort,降序,List,Dart,numbers,数组,列表,排序
From: https://blog.51cto.com/u_15997490/7164143

相关文章

  • NumPy 从已有的数组创建数组
    NumPy从已有的数组创建数组1、numpy.asarraynumpy.asarray类似numpy.array,但numpy.asarray参数只有三个,比numpy.array少两个。numpy.asarray(a,dtype=None,order=None)a:任意形式的输入参数,可以是,列表,列表的元组,元组,元组的元组,元组的列表,多维数组;dtype:数据类......
  • 找出最长等值子数组
    给你一个下标从0开始的整数数组nums和一个整数k。如果子数组中所有元素都相等,则认为子数组是一个等值子数组。从nums中删除最多k个元素后,返回可能的最长等值子数组的长度。1.哈希分组+反悔队列蠢逼做法classSolution{public:intlongestEqualSubarray......
  • shell脚本中的函数与数组
    一.函数编写脚本时,有些脚本可以反复使用,可以调用函数来解决语句块定义成函数约等于别名函数使用方法:定义函数再引用函数建立函数,基本格式1.function函数名{ 命令序列}2.函数名(){命令序列}3.functionfunc_name(){...函数体...}1.注意事项直接写......
  • C++ Vector数组优化
    Vector数组优化问题这是一段没有优化的代码:#include<iostream>#include<vector>classEntity{public: intx,y;public: Entity(intx,inty) :x(x),y(y){} Entity(constEntity&e) :x(e.x),y(e.y){ std::cout<<"Copied!"<<st......
  • 1.8.21二维数组右上左下遍历
    1.题目描述给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组。输入输入的第一行上有两个整数,依次为row和col。余下有row行,每行包含col个整数,构成一个二维整数数组。(注:输入的row和col保证0<row<100,0<col<100)输......
  • 力扣-4-寻找两个正序数组的中位数
    题目要求O(log(m+n))的时间复杂度知道了两个数组的长度,那么中位数的下标以及如何计算是可以确定的,给出的是两个正序数组,如果使用双指针,从两个数组头开始扫描并比较,找出合并后第K小的数字,时间复杂度是多少?时间复杂度是O((M+N)/2),这个目标还不及题目的要求,看到logN就会想到二分......
  • 列表与数组
    目录数组列表..范围操作符qw简写列表的赋值@字符pop和push操作符shift和unshift列表指的是标量的有序集合,而数组则是存储列表的变量数组假如你对索引值超过数组尾端的元素进行赋值,数组将会根据需要自动扩大——只要有可用的内存分配给Perl,数组的长度是没有上限的。如果在扩展......
  • Dart 是不是单线程模型?是如何运行的?
    引用《Flutter中文网》里的话:Dart在单线程中是以消息循环机制来运行的,其中包含两个任务队列,一个是“微任务队列”microtaskqueue,另一个叫做“事件队列”eventqueue。入口函数main()执行完后,消息循环机制便启动了。首先会按照先进先出的顺序逐个执行微任务队列中的任务,当所......
  • 数组
    数组我们可以使用数组来保存同一个数据类型的多个数据数组的特点1.数组的长度一旦确定就不能改变 1.一个数组中元素的数据类型都是一样的数组的初始化动态初始化格式数据类型[]数组名=new数据类型[长度];例如:int[]array=newint[10];//动态初始化一个长度为10的数组,数组......
  • dart集成shell脚本调用功能
    pubspec.yaml里添加依赖:shell:anyimport'dart:io';import'package:shell/shell.dart';voidmain(List<String>arguments)async{varshell=Shell();varpassword=Platform.environment['PASSWORD'];print('Passw......