Java 8에서 Comparator를 구현하여 Comparator.comparing (....)을 사용하여 필드별로 비교합니다. Java 8의 필드에 의해서만 사용자 지정 Comparator.comparing을 수행합니다.
내가 달성하고자하는 기능
은 다음과 같습니다 :List<DocumentLink> documentList = documentLinkService.getDocumentList(baseInstance);
//call of custom comparator for DigitalFileCategory due to compare only by Name
documentList = documentList.stream()
.filter(doc -> category.comp(doc.getDigitalFileCategory()))
.collect(Collectors.toList());
그래서 내가 부울 값을 반환해야합니다. DigitalFileCategory에서 경화제 방법 : 나는 그렇게 할 수있는 방법을
public boolean comp(Object obj) {
return super.equals(obj) ||
(obj != null &&
getName() != null &&
getName().equals(((DigitalFileCategory) obj).getName()));
}
어떤 아이디어? Comparator.comparing을 구현하려고 할 때 getName을 정적으로 설정하도록 요청했습니다.
DigitalFileCategory.class
public class DigitalFileCategory extends _Base {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "iddigitalfilecategory", nullable = false)
private Integer iddigitalfilecategory;
@Column(name = "Name", length = 64)
private String name;
@Column(name = "Priority")
private Integer priority;
// getter && setter
}
'DocumentLink' 및'DigitalFileFactory' 클래스에 대한 기본 정보를 제공해주십시오. –
왜 Comparator가 필요합니까? – Oleg
'Comparator'는 정렬을위한 것이지 평등을위한 것이 아닙니다. – shmosel