gpt4 book ai didi

java - 通过比较 ZonedDateTime 类型的内部字段,使用 lambda 对 beans 进行排序

转载 作者:行者123 更新时间:2023-12-01 10:57:57 26 4
gpt4 key购买 nike

我有多个具有以下结构的 Bean

@Entity
public class AttributeA implements AttributeInterface{
.....
public ZonedDateTime dateEnabled;
....
}

@Entity
public class AttributeB implements AttributeInterface {
.....
public ZonedDateTime dateEnabled;
....
}

@Entity
public class AttributeC implements AttributeInterface {
.....
public ZonedDateTime dateEnabled;
....
}

我有一个接口(interface) AttributeInterface ,它基本上是所有属性的标记。该接口(interface)实现了几个功能(不止一个)。我需要做的是当我有 AttributesInterfaces 集合时,即

Collection<AttributeInterface> collectionObject;  

我需要按作为这些属性一部分的“dateEnabled”字段对该集合进行排序,然后需要选择最新的属性,即最后创建的属性,并对其执行操作,例如 attribute.disable() .

我是 lambda 的新手,但我想使用 lambda,因为它们提供了并行性。然而,我无法弄清楚结构应该是什么,即最有效的方法是什么。我的意思是shell我在AttributeInterface下添加一些新方法,例如compareToAnotherAttributeByZonedDateTime(),并在所有Attribute/A/B/C bean中实现该方法,然后调用此处提供的解决方案:

Sort a Java collection object based on one field in it

 Collections.sort(collectionObject , new Comparator<ZonedDateTime>()
(AttributeInterface o1, AttributeInterface o2) ->
{
return (o1.getCustomerCount().compareToAnotherInterfaceByZonedDateTime() - o2.getCustomerCount().compareToAnotherInterfaceByZonedDateTime() );
}
);
或者是否有任何有效的方法,即一些 java 8 内置函数 [SAM -单一抽象方法或(功能接口(interface))] 可以对 ZonedDateTime 类型进行这种比较?我的意思是来自java.utils.functions

如果有一个例子,我们将不胜感激。

最佳答案

找到了 java 8

Collections.sort((List<AttributeInterface>) collectionObject, (obj1, obj2) -> 
obj1.getDateEnabled().compareTo(obj2.getDateEnabled() ) );

关于java - 通过比较 ZonedDateTime 类型的内部字段,使用 lambda 对 beans 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33519106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com