背景:

User实体类 有个属性是 Set<PositionChange> 职位变更字段

如下:

PositionChange实体类  有个属性是positionStartDate   什么时候开始任职此职务的字段

现在有一个需求,想在查询出  User这个对象的时候 ,可以获取到 Set<PositionChange>中  用户最新任职的一条岗位记录,也就是展示当前用户所处的岗位信息。

但是,Set始终的无序的,想要取出Set中PositionChange的positionStartDate时间最新的一条,并且是在 取出User的时候 直接就是好的 我直接拿来用就行了

需求介绍完毕

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

解决途径:  在User实体中  新设置一个List<PositionChange>  用来装将Set按照自己的想法排序之后的结果

在使用的地方 直接取List里面的值即可。

  1. import java.sql.Timestamp;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.HashSet;
  6. import java.util.List;
  7. import java.util.Set;
  8.  
  9. /**
  10. * User 用户
  11. */
  12. @Entity
  13. @Table(name = "user", catalog = "performance")
  14. @JsonIgnoreProperties(value={"workaffs"})
  15. public class User implements java.io.Serializable {
  16.  
  17. private Set<Positionchange> positionchanges = new HashSet<Positionchange>(0);//岗位变动表
  18.  
  19. private List<Positionchange> positionChanges ;//新设置的List<>
  20. //不让hibernate认为这是数据库的字段
  21. @Transient
  22. public List<Positionchange> getPositionChanges() {
  23. positionChanges = new ArrayList<Positionchange>(positionchanges);
  24. Collections.sort(positionChanges, new Comparator<Positionchange>() {
  25.  
  26. @Override
  27. public int compare(Positionchange o1, Positionchange o2) {
  28. return o1.getPositionStartDate().after(o2.getPositionStartDate()) ? -1 : 1;
  29. }
  30.  
  31. });
  32. return positionChanges;
  33. }
  34.  
  35. public void setPositionChanges(List<Positionchange> positionChanges) {
  36. this.positionChanges = positionChanges;
  37. }

【java】实体类中 Set<对象> 按照对象的某个字段对set排序的更多相关文章

  1. java 实体类中日期格式转换

    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss&quo ...

  2. JAVA实体类不要使用基本类型,基本类型包含byte、int、short、long、float、double、char、boolean

    由于JAVA的基本类型会有默认值,例如当某个类中存在private  int age;字段时,创建这个类时,age会有默认值0.当使用age属性时,它总会有值.因此在某些情况下,便无法实现age为nu ...

  3. java实体类和json串字段名称不一致或者与map中字段名称不一致使用注解转化

    package yuanCheng; import java.text.MessageFormat; import java.util.ArrayList; import java.util.List ...

  4. 转载:C++中两个类中互相包含对方对象的指针问题

    原文链接:http://www.cnblogs.com/hanxi/archive/2012/07/25/2608068.html 前几天很不爽,因为C++中两个类中互相包含对方对象的指针编译时提示某 ...

  5. Java定义bean实体类中的变量时变量名的问题

    首先:TMD,这个问题花了我两个多小时,居然是因为一个字母的大小写导致的,我瞬间就&Y^%^&%&()*%¥%¥¥&^#@%&; 事情是酱紫的: 我定义了一个变 ...

  6. Java循环遍历中直接修改遍历对象

    Java 循环遍历中直接修改遍历对象如下,会报异常: for (ShopBaseInfo sp: sourceList) { if(sp.getId()==5){ sourceList.remove( ...

  7. 利用JAXB实现java实体类和xml互相转换

    1.应用场景 在使用WebService实现数据上传下载,数据查询时,可以利用JAXB实现java实体类和xml互相转换 2.Demo 2.1 student.java 实体类,包含list(set同 ...

  8. 读取Excel文件存储在实体类中

    1.Maven文件 <!--读取Excel的架包--> <dependency> <groupId>org.apache.poi</groupId> & ...

  9. 解析java实体类

    对java实体类的众多理解: A .就是属性类,通常定义在model层里面 B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段. 好处: 1.对对象实体的封装,体现OO思想. 2.属性可以 ...

  10. JDBCUtils,根据当前MySQL数据库下面的表生成java实体类

    自己简单写的JDBCUtils,可以根据当前数据库下面的表生成java实体类,代码萌新,请多多包涵. 初始化配置: //驱动程序名//不固定,根据驱动 static String driver = & ...

随机推荐

  1. 构造函数、原型对象prototype、实例、隐式原型__proto__的理解

    (欢迎一起探讨,如果有什么地方写的不准确或是不正确也欢迎大家指出来~) PS: 内容中的__proto__可能会被markdown语法导致显示为proto. 建议将构造函数中的方法都定义到构造函数的原 ...

  2. mybatis多表查询,自动生成id

    主要是在配置文件中,配置好所要包含的字段. 类关系:account----role,1对1 account包含role类 java类: public class Account{ private In ...

  3. HDU-5384

    Danganronpa Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  4. sharding-jdbc 实现分表

    Sharding-JDBC 简介 Sharding-JDBC直接封装JDBC API,可以理解为增强版的JDBC驱动,旧代码迁移成本: 可适用于任何基于Java的ORM框架,如:JPA.HIberna ...

  5. ubuntu上安装mysql及导入导出

    ubuntu上安装mysql:  1. sudo apt-get install mysql-server 2. apt-get isntall mysql-client3. sudo apt-get ...

  6. POJ 2777 Count Color(线段树 + 染色问题)

    传送门:Count Color Description Chosen Problem Solving and Program design as an optional course, you are ...

  7. No module named '_Sqlite3' 解决方法

    今晚,在学习Python的时候,(学习链接:http://yidao620c.github.io/blog/20150420/simpleblog-01.html(搭载自己的博客案例)): 想为系统生 ...

  8. 876. Middle of the Linked List【Easy】【单链表中点】

    Given a non-empty, singly linked list with head node head, return a middle node of linked list. If t ...

  9. CodeForces 766D Mahmoud and a Dictionary

    并查集. 将每一个物品拆成两个,两个意义相反,然后并查集即可. #pragma comment(linker, "/STACK:1024000000,1024000000") #i ...

  10. Spring源码分析之Bean的加载流程

    spring版本为4.3.6.RELEASE 不管是xml方式配置bean还是基于注解的形式,最终都会调用AbstractApplicationContext的refresh方法: @Override ...