【java】實體類中 Set<對象> 按照對象的某個字段對set排序


背景:

User實體類 有個屬性是 Set<PositionChange> 職位變更字段

如下:

 

PositionChange實體類  有個屬性是positionStartDate   什么時候開始任職此職務的字段

現在有一個需求,想在查詢出  User這個對象的時候 ,可以獲取到 Set<PositionChange>中  用戶最新任職的一條崗位記錄,也就是展示當前用戶所處的崗位信息。

但是,Set始終的無序的,想要取出Set中PositionChange的positionStartDate時間最新的一條,並且是在 取出User的時候 直接就是好的 我直接拿來用就行了

需求介紹完畢

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

解決途徑:  在User實體中  新設置一個List<PositionChange>  用來裝將Set按照自己的想法排序之后的結果  

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

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;


/**
 * User 用戶
 */
@Entity
@Table(name = "user", catalog = "performance")
@JsonIgnoreProperties(value={"workaffs"})
public class User implements java.io.Serializable {


    private Set<Positionchange> positionchanges = new HashSet<Positionchange>(0);//崗位變動表
    
    private List<Positionchange> positionChanges ;//新設置的List<>
    //不讓hibernate認為這是數據庫的字段
    @Transient
    public List<Positionchange> getPositionChanges() {
        positionChanges = new ArrayList<Positionchange>(positionchanges);
        Collections.sort(positionChanges, new Comparator<Positionchange>() {

            @Override
            public int compare(Positionchange o1, Positionchange o2) {
                return o1.getPositionStartDate().after(o2.getPositionStartDate()) ? -1 : 1;
            }
            
        });
        return positionChanges;
    }


    public void setPositionChanges(List<Positionchange> positionChanges) {
        this.positionChanges = positionChanges;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM