- 浏览: 764818 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
飞出四季做的茧:
z赞
JAVA日期格式化字符串的24小时制 -
daniaowansui:
亲测,可行!
JS 在open打开的窗口中调用父页面JS方法 -
zh_123:
ie9测试过吗貌似列不能冻结啊!
Css 实现的表头, 表列冻结, 可以超大数据量 -
Jxdwuao:
IXR 写道少年,在哪里混呢?在虹桥机场这边阿, 兄弟你在何方 ...
修改JS文件FF刷新不生效 -
IXR:
少年,在哪里混呢?
修改JS文件FF刷新不生效
----------------------------------------------------------------------------------------------------------------------------------
集合内排序:
比如 :对列表 List<AsnExpDateDto> 排序:
AsnExpDateDto 类需要实现接口 Comparable
/** * @author wuao 签注有效期查询Dto 2011-08-30 * */ public class AsnExpDateDto implements Comparable<AsnExpDateDto> { // PILOT_BASIC_INFO private Integer basicInfoId;// 飞行员基础表主键 private String clerkCode; //工号 private String pilotName;// 飞行员姓名 @Override public int compareTo(AsnExpDateDto o) { // TODO 根据本次复训日期进行顺序排序 int monthInt = this.getLicenceEndDate().compareTo(o.getLicenceEndDate()); if(monthInt == 0){ return this.getBenchMonth() - o.getBenchMonth(); } return monthInt; } }
Collections.sort(rstAsnExpDateList);
就可以排序 。
注意的是: 集合内用于排序的接口计算的值不要出现 NULL 的 , 否则,会影响排序结果。
目前 ,我把用于排序的字段的值为空的元素过滤出来, 单独插入到集合的最前 。
for(PeopleDto peopleDto : peopleRstList){ if(asnExpDateDto.getLicenceEndDate() != null){ rstAsnExpDateList.add(asnExpDateDto); }else{ rstAsnExpDateEmpList.add(asnExpDateDto); } } Collections.sort(rstAsnExpDateList); rstAsnExpDateList.addAll(0, rstAsnExpDateEmpList);
实现排序接口:
public final class ModelableComparator implements Comparator<Modelable> { private final List<Long> ids; public ModelableComparator(List<Long> ids) { this.ids = ids; } protected int getIndex(Long id) { return ids.indexOf(id); } @Override public int compare(Modelable o1, Modelable o2) { return (getIndex(o1.getId()) - getIndex(o2.getId())); } }
Modelable 接口 :
public interface Modelable { public Long getId(); public void setId(Long id); }
排序的时候, List 中的类型要有这个 getId() 方法 。
public class ActivityVO implements Serializable,Modelable{
private Long id; // 标识ID ...........
}
List<ActivityVO> activityVOs;
List<Long> ids=cmsItemService.recommendItemFidListByCod(cmsKey,count); //按照 ids 的顺序排序 Collections.sort(activityVOs, new ModelableComparator(ids));
对 List 进行多种方式的排序
for(StudentDto dto : context.getWarnStudentList()){ SimCrewAssignCheck simCrewAssignCheck = new SimCrewAssignCheck(); simCrewAssignCheck.setIndex(0L); simCrewAssignCheck.setUnitName(dto.getDto().getUnitName()); simCrewAssignCheck.setClerkCode(dto.getDto().getClerkCode()); simCrewAssignCheck.setName(dto.getDto().getPilotName()); simCrewAssignCheck.setReason(dto.getErrMsg().toString()); fixEditable(dto, simCrewAssignCheck); simCrewAssignCheck.setLastDate(dto.getDto().getValidBeginDate()); simCrewAssignCheck.setStandardMonth(dto.getDto().getBenchMonth()); simCrewAssignCheck.setBigErrTypeName(dto.errBigType.optname); simCrewAssignCheck.setStandard(dto.getDto().getTechnicalStandard()); simCrewAssignCheckList.add(simCrewAssignCheck); } //初始化单位列表信息 this.a = context.getA(); //已经按照的顺序是 错误种类 排 //把错误进行排序 if(formCheck.getOrder_type() == 1){//按照 单位+姓名 排 UnitNameComparator compare = new UnitNameComparator(); Collections.sort(simCrewAssignCheckList, compare); }else if(formCheck.getOrder_type() == 3){//按照 小错误原因+单位+姓名 排 TypeUnitNameComparator compare = new TypeUnitNameComparator(); Collections.sort(simCrewAssignCheckList, compare); }
比较器的代码:
/** * 单位 + 姓名 的排序比较器 * @author wuao * */ private class UnitNameComparator implements Comparator { @Override public int compare(Object o1, Object o2) { // TODO Auto-generated method stub SimCrewAssignCheck s1 = (SimCrewAssignCheck) o1; SimCrewAssignCheck s2 = (SimCrewAssignCheck) o2; if(s1.getUnitName().equals(s2.getUnitName())){ return s1.getName().compareTo(s2.getName()); }else{ return s1.getUnitName().compareTo(s2.getUnitName()); } //return 0; } } /** * 小错误原因+单位+姓名 的排序比较器 * @author wuao * */ private class TypeUnitNameComparator implements Comparator { @Override public int compare(Object o1, Object o2) { // TODO Auto-generated method stub SimCrewAssignCheck s1 = (SimCrewAssignCheck) o1; SimCrewAssignCheck s2 = (SimCrewAssignCheck) o2; if(!s1.getReason().equals(s2.getReason())){ return s1.getReason().compareTo(s2.getReason()); }else{ if(s1.getUnitName().equals(s2.getUnitName())){ return s1.getName().compareTo(s2.getName()); }else{ return s1.getUnitName().compareTo(s2.getUnitName()); } } //return 0; } }
更多Java对象比较器应用,见 :
http://blog.163.com/jean757282710@126/blog/static/114224249201052641741154/
发表评论
-
JDK8开发STREAM流Collectors.toList()出现NULL异常
2025-01-15 17:31 0JAVA使用流式开发,总是在最终排序汇总的行报错 ... -
NGINX配置简单的MOCK接口
2024-10-15 17:25 0公司中需要对应用进行压测,需要不影响接口返回速度的情况下,返 ... -
RabbitMQ消息关闭自动启动
2024-09-23 11:34 0应用配置的RabbitMQ一启动就注册监听器,这样 ... -
应用内存长期80%不下降
2024-06-21 18:13 0观察到应用JVM长期85%以上,堆内存小幅度波动,没有变化, ... -
内存80告警
2024-05-24 11:08 0网关内存到了85%, 查看近几天内存一直小幅波动,没有下降 ... -
Eclipse设置护眼色
2022-06-17 09:04 0编辑区背景色 1.背景颜色 Window->Pre ... -
java证书安装和更新/删除
2022-01-19 15:02 1139拿到证书,如 ****2019.cer。在WIN下面,双击 ... -
CLASS文件目录不执行更新,改了代码不生效
2021-12-02 16:56 0class目录下不编译, 更新了代码运行还是老的内容执行. ... -
Struts2导出多Excel压缩包
2021-09-28 16:34 0Struts2配置 <result name= ... -
8080端口不能访问
2021-07-21 23:11 0电脑装好之后,本机能访问,外机通过IP不能访问,关闭防火墙可 ... -
JVM设置中文编码
2021-07-05 11:46 0用CXF2.0做了一个接口转发服务,调用后发现中文出现乱码, ... -
自动发布没有通知更新缓存
2021-01-15 10:17 0问题 在成功测试完成平台的一个版本, 测试计划出测试报告 ... -
Eclipse 查看本地历史记录
2020-09-03 16:39 0Eclipse 在更新后,发现本地修改的代码不见了,可以使 ... -
SPRINGBOOT定时器中断不跑了测试
2020-08-05 21:43 0一次发布之后, 定时器不跑了, 追查了TOMCAT 日志, ... -
LOG4J多项目同TOMCAT后面项目不生成日志文件
2020-04-28 10:35 0在项目的TOMCAT里新增加一个监控的项目, 发现监控项目 ... -
DUBBO配置多环境
2019-11-07 16:49 0需要在Springboot2项目中配置DUBBO, Dub ... -
SOAPUI中文乱码
2019-10-23 11:05 0用SOAPUI调用报错UTF-8,参数中有中文。看到返回错误 ... -
JAVA中SET集合判断是否包含的坑
2019-10-22 14:18 0SET集合中存放航班信息对象FlightBoardQuery ... -
定时器任务缓慢
2019-10-09 13:51 0值机系统在国庆前定时器不再执行了。查日志Spring定时任 ... -
NGINX配置
2019-05-28 16:17 0在测试环境LINUX安装后,调试了很久跳转TOMCAT不通 ...
相关推荐
谷歌的Collection包是Java开发中一个非常重要的工具集,它扩展了Java标准库中的集合框架,为开发者提供了更强大、更高效的数据结构和算法。在谷歌Collection包中,特别是其Guava子库,包含了丰富的数据结构,如...
在Java编程语言中,集合框架是处理对象组的重要工具,其中`Collection`是最基础的接口,它是所有集合类的根接口。在这个Java集合类的学习资料中,我们将深入探讨`Collection`以及与其相关的`TreeMap`、`Set`和`List`...
本次我们关注的是Java集合框架中的三类接口:List、Set和Map,以及如何实现它们的特定功能,特别是关于`TreeSet`和`TreeMap`的按值排序。标题中提到的“JCF(List、Set、Map)学习,实现了,value>按value排序”是一个...
同时,`Collections`工具类提供了许多静态方法,可以对集合进行操作,如反转、填充、排序等。 此外,`List`接口中的`add(E e)`、`remove(Object o)`、`get(int index)`等方法以及`Set`接口中的`add(E e)`、`remove...
本文将深入探讨集合框架的各个组成部分,包括Collection、List、Set和Map,以及它们的实现原理和排序方法。 1. **集合框架概述** 集合框架是一个统一的接口层次结构,用于存储和操作对象的容器。Java集合框架的...
本文将深入探讨Java集合框架,包括Collection、List、Set和Map四大接口,以及它们的实现原理和排序方法。 **1. 集合框架概述** 集合框架是一组接口和类,用于存储、管理和操作对象的容器。这些接口和类为开发者...
了解这些接口之间的差异对于编写高效的Java代码至关重要,同时也为深入学习Java集合框架的源码和工具使用奠定了基础。通过阅读和实践,开发者可以更好地理解和利用这些接口,提高代码的可读性和效率。
在Laravel框架中,`Laravel Collection`是一个强大的工具,它是对PHP的数组操作的扩展,提供了丰富的实用方法,使得处理数据变得更加优雅和简洁。这个压缩包文件"laravel-collection-master"很可能包含了Laravel ...
总的来说,PHP中的`Collection`集合类是组织和操作数据的有效工具,它不仅提供了统一的数据接口,还能通过扩展实现更高级的功能,从而提高代码的灵活性和复用性。合理地利用`Collection`,可以使代码更加模块化,...
- `TreeSet`:基于红黑树实现的排序集合。 - `LinkedHashSet`:结合了`HashSet`和`LinkedList`的特性,保持插入顺序。 - **Map**:存储键值对的集合。 - `HashMap`:基于哈希表实现的映射。 - `TreeMap`:基于...
本篇文章将深入剖析Java中的`Collection`框架,探讨其核心概念、主要接口及其实现类,以及在实际开发中如何有效地使用这些工具。 首先,我们来看`Collection`接口。它定义了集合的基本操作,如添加元素(`add()`)...
它提供了处理数据集合的强大工具,这些工具不仅支持基本操作(如添加、删除和查找),还支持更高级的功能,如排序、过滤等。 ##### 1.1.1 容器简介 在Java中,容器是用来存储对象的一种数据结构。容器可以分为两大...
7. **默认方法**:`Collection`和`List`接口新增了默认方法,如`sort()`,使得无需实现类就可以直接调用排序功能。 在`TestSort.java`这个文件中,你可能会看到以上各种排序技术的实际应用。通过学习和实践这个示例...
- **基于排序二叉树的实现**:`TreeMap`和`TreeSet`采用红黑树数据结构实现,这要求集合中的元素必须具备可比较性(即实现`Comparable`接口)。红黑树保证了树的高度较低,从而提供了稳定的查找效率。 #### 三、...
在这个框架中,Collection和Map接口及其实现类扮演着核心角色。 1. **Collection接口**: - Collection是所有单值容器的基接口,包括Set和List接口。 - **Set接口**:不允许重复元素,主要实现有HashSet、TreeSet...
- **Collections 类**:提供了一系列静态方法用于操作 Collection 对象,包括排序、反转、填充等。 - **Arrays 类**:如前所述,提供了多种数组操作方法,例如排序、填充等。 #### 四、继承关系及具体实现 - **...
### JAVA Collection框架详解 #### 一、概述 Java Collection框架 是 Java 核心库中...通过上述分析,我们可以看出 Java Collection 框架为我们提供了丰富的工具来处理不同类型的数据结构需求,大大提高了开发效率。
### Java之Collection总结 #### 一、集合简介与遍历方式 ##### 1.... 集合是一种特殊的数据结构,主要用于存储和管理对象。...此外,`Collections`工具类和排序比较接口的合理运用能够进一步增强程序的功能性和灵活性。
总的来说,`Collections` 类提供的排序功能使得在 Java 中对 `List` 进行操作变得更加便捷,无论是自然排序还是定制排序,都可以轻松实现。同时,随着 Java 8 及更高版本的引入,流API也提供了新的排序方式,开发者...
内容存在一些文字错误和漏识别,但可以推断该文档详细讲解了Java集合类的各个接口以及实现类的特点、用法以及它们之间的区别,并且详细介绍了集合的排序机制,如何利用Comparable和Comparator接口实现排序,以及集合...