关于集合的排序
来源:互联网 发布:电脑淘宝如何收藏宝贝 编辑:程序博客网 时间:2024/06/14 18:26
场景:从mongo库查询不同表的时间字段,获取所有年份,按照从大到小排序,并去除重复年份
挖坑过程:
1.首先想到treeSet集合的特性,int自然序列排序,去重,试了一试发现是顺序排列(由于懒放弃了自己写比较器。)
2.然后想到用sql降序排好序,在利用set集合的去重机制,利用linkedHashSet按存储循序排列的特点实现,后发现mongo两个集合查询的年份整合到一起还是乱序。
3.前几天用看了一些关于集合的文章,想到集合的一些tree类型可以自定义排序,于是又查了些关于集合排序的资料,突然发现treeSet的默认排序也是用比较器写的,Integer已经帮实现了比较器。Arrays.sort(array);内部也是使用了比较器。好吧那就自己写一个比较器吧。如下
class MyComparator implements Comparator<Integer>{ @Override public int compare(Integer a, Integer b) {
//从大到小 if(a > b){ return -1; }else if(a < b){ return 1; } return 0; }}
使用:Set<Integer> set_=new TreeSet<Integer>(new MyComparator());
4.比较器也可以实现根据类中的字段排序
例:
class ActivityLitSaleTopSort implements Comparator<ActivityLitSaleTopDTO> {@Overridepublic int compare(ActivityLitSaleTopDTO k1, ActivityLitSaleTopDTO k2) {if (k1.getTopAmount() < k2.getTopAmount()) {return 1;} else if (k1.getTopAmount() > k2.getTopAmount()) {return -1;} else {return 0;}}}
public class ActivityLitSaleTopDTO {private String litId; private String topName; private Double topAmount=0.0; private Integer topVolume=0; private IntegertopOrder=0; private DoubletopPayRate=0.0;
使用:
Collections.sort(topDtos, new ActivityLitSaleTopSort());
阅读全文
0 0
- 关于集合的排序
- 关于hibernate集合的排序问题
- JAVA中关于集合类的排序
- 关于List<?>集合的排序--有待测试
- Java 关于两个集合合并,并排序的demo
- 一些排序的集合
- 集合的排序
- List集合的排序
- 集合的排序
- map集合的排序
- set集合的排序
- 集合的排序
- 集合排序的实现
- java 集合的排序
- 集合的排序
- 集合的排序
- 关于集合中排序有关的比较方式和排序原理
- 关于集合中对象如何进行排序
- ELK由5.5.x升级到6.0.0的错误及其解决办法收集
- java内存管理
- mqtt
- node中的模块
- 网络协议分析(PPP协议)
- 关于集合的排序
- ReactOS学习笔记(2)- 如何在Ubuntu上使用GDB和QEMU远程源代码调试ReactOS?
- [ArcPy] 将道路(shp)平均分配给志愿者 生成6*6格网
- 设计模式:外观模式12.19
- GitHub上受欢迎的Android UI Library
- 理解dajngo ORM查询中select_related的作用
- 杭电acm1009 FatMouse'Trade
- 小蜜蜂单片机学习EFM8SB
- 每天一个linux命令(18):locate 命令