我想按 ElementWithDistance 類中的距離對物件串列 potentialHS 進行排序,但我無法以這種方式獲取 distnace 欄位。呼叫 getElementWithDistance 后,我無法呼叫 getDistance。如何按包含類中的欄位對串列進行排序?
List<PotentialHS> potentialHS = potentialHS.stream().sorted(Comparator.comparingDouble(PotentialHS :: getElementWithDistance)).collect(Collectors.toList());
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@Builder
@ToString
public class PotentialHS {
private Integer density;
private Double startDistance;
private Double lastDistance;
private List<PMValue> pmv;
private ElementWithDistance elementWithDistance;
}
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@Builder
@ToString
public class ElementWithDistance {
private Long elementId;
private Double distance;
private Type type;
}
uj5u.com熱心網友回復:
PotentialHS :: getElementWithDistance
是以下的簡寫:
(PotentialHS x) -> x.getElementWithDistance()
換句話說,它說:要對該流進行排序,應用以下操作:
- 流中的每個專案,通過呼叫它來獲取你得到的東西
getElementWithDistance()。將其視為雙打,然后按這些雙打排序。
這顯然行不通 -ElementWithDistance不是雙重的。
你要:
(PotentialHS x) -> x.getElementWithDistance().getDistance();
還要注意它是 a Double,而不是 a double,所以這是一個錯誤(修復它。Double是 周圍的非原始包裝型別double,你真的不想要它。它有一個額外的值(null),而且效率非常低。它也意味著你不能做諸如“給我這個流中最大的雙倍”之類的事情。
這讓你:
List<PotentialHS> potentialHS = potentialHS.stream().sorted(Comparator.comparingDouble(x -> x.getElementWithDistance().getDistance())).collect(Collectors.toList());
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/416009.html
標籤:
上一篇:變數不是型別
