[英]Sorting collections within objects using Comparator and functions
我有以下方法,并想在比较中添加另一个字段,但是我发现很难包含。
private static int daoComparator(EDao eDao1, EDao eDao2) {
return Comparator.comparing((EDao eDao) -> eDao.getObjectA().getStatus())
.thenComparing(EDao::getUpdatedDate)
.thenComparing(EDao::getCreatedDate)
.thenComparing((EDao eDao) -> eDao.getObjectA().getId())
.compare(eDao1, eDao2);
}
在EDao
class 中有ObjectA
,在ObjectA
中有一个Collection<ObjectB>
。 在ObjectB
中有一个String
类型的Enum
,我需要在上面的daoComparator
中检索和排序。 如何更新我的方法来检索和排序这个String
Enum
? 它也需要是第一个比较。 Comparator
器来自java.util
package。
public class EDao
{
private ObjectA objectA;
private Date updatedDate;
private Date createdDate;
}
public class ObjectA
{
private String id;
@Enumerated(EnumType.STRING)
private String status;
private Collection<ObjectB> objectB;
}
public class ObjectB
{
// field I want to retrieve for sorting
@Enumerated(EnumType.STRING)
String RegStatus status;
}
我设法检索了状态',我只需要处理ObjectB
可能是 null 的场景。
private static int daoComparator(EDao eDao1, EDao eDao2) {
return Comparator.comparing((EDao eDao) -> eDao.getObjectA().getObjectB().stream().findFirst().get().getStatus())
.thenComparing((eDao eDao) -> eDao.getObjectA().getStatus())
.thenComparing(EDao::getUpdatedDate)
.thenComparing(EDao::getCreatedDate)
.thenComparing((EDao eDao) -> eDao.getObjectA().getId())
.compare(eDao1, eDao2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.