Java8对list排序(正序倒序)

话不多说直接上干货

这里我写了一个list数组里边add了三个Order实体(我的ucId,price,qty都是int类型)

第一个实例:我对price进行从小到大的排序(我的price是int类型)

显然这里的第一种方式已经给出提示了,让使用第二种更简洁的方式去编写。

第二个实例:我对price和qty进行正序排序

显然这里也是推荐使用第二种方式

好了重点来了

第三个实例:对price正序,qty倒序

我一开始这么写

第一种方式得到的结果(正确的)

第二种方式得到的结果(错误的),看源码应该可以看出,这里的排序只是记了一个状态去排序的,会把整个的排序都按照倒序去排列了,所以这里得到的结果肯定是错误的

然后我在网上各种百度(大部分都是不负责任的自己应该都还没亲自试过的吧)

后来查看源码之后发现还有一个方法,修改之后

得到的结果

好了,今天的分享就到这里了,如有不对的地方,还请大家指点出来,帮助到您记得点赞哟。

原文地址:https://www.cnblogs.com/lqtbk/p/11607023.html

时间: 2024-10-21 12:20:29

Java8对list排序(正序倒序)的相关文章

关于日期的正序倒序问题

1.日期正序排列(日期从小到大) function ForwardRankingDate(data, p) { for (i = 0; i < data.length - 1; i++) { for (j = 0; j < data.length - 1 - i; j++) { if (Date.parse(data[j][p]) > Date.parse(data[j+1][p])) { var temp = data[j]; data[j] = data[j + 1]; data[j

JS通过sort(),和reverse()正序和倒序

sort()正序 var array1 = [0,1,5,10,15]; array1.sort();//结果为:0,1,10,15,5 请注意,上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数: function sortNumber(a,b) { return a - b } var arr = [10,5,40,25,1000,1]; arr.sort(sortNumber);//结果:[ 1, 5, 10, 25, 40, 1000 ] reverse (

SortedDictionary&lt;TKey,TValue&gt;正序与反序排序

SortedDictionary<TKey,TValue>能对字典排序 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SortDictionary { class Program { static void Main(string[] args) { TestDictionarySort()

排序:正序冒泡,交错冒泡,插入排序,选择排序,快速排序

1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 #include<string.h> 5 const int N=10; //修改随机数据量 6 bool onOroff=1; //数组打印开关:1要打印,0不打印 7 void bubble_sort(int a[],int n) 8 { 9 for(int i=0 ; i<N ; ++i) 10 { 11 for(int j

C#数组的排序(正序逆序)

这种排序 超级简单的 ! using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication4 { class Program { static void Main(string[] args) { string[] str = { "d","h","a","c",&

hdu 4857 逃生(拓扑排序逆序 + 优先队列)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4857 题意:有编号 1 - n 的 n 个人逃生,编号越小的人越有钱, 在满足 m 个前提的条件下要尽可能早的逃脱 .m个前提,对于每个前提 a , b,代表 a 要早于 b逃脱. 思路: (1)这题可以理解为有钱的人优先级越高,所以可以用优先队列. (2)但是要注意这道题和字典序升序的区别. eg:5 1 5 1 按照字典序的答案:2 3 4 5 1,    本题答案: 5 1 2 3 4. 因为

算法-整数的正序和逆序输出

其实上一篇文章用递归实现了整数的正序输出,思考了整数还是可以逆序输出,不过大同小异,没有太多差别: 正序输出 -(void)printOutNumber:(NSInteger)number{ //取整,不断的递归取整,之后取余 if (number>10) { [self printOutNumber:number/10]; } NSLog(@"数值%ld",number%10); } 逆序输出 循环输出,这个比较简单容易理解: -(void)reverseNumber:(NSI

用结构体指针存储数据__正序_逆序下的输入

逆序输入 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <malloc.h> 4 #define maxn 1000 5 6 //邻接表(点很多,边较少) 7 //共有n个点,点编号为1~n,m条边 8 //无向图 9 10 struct node 11 { 12 long value; 13 struct node *next; 14 }*d[maxn+1]; 15 16 int main() 17 { 1

Ka递归的编程练习 Part2|做到吐的正序逆序输出、等差数列和

1 #include<stdio.h> 2 void PP(int n) 3 { 4 if(n==0) return; 5 PP(n/10); 6 printf("%d",n%10); 7 } 8 void NP(int n) 9 { 10 if(n==0) return; 11 printf("%d",n%10); 12 PP(n/10); 13 } 14 int Ad(int n) 15 { 16 if(n==0) return 0; 17 if(n