我有多个Beans,它们具有以下结构
@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;
....
}
我有一个接口AttributeInterface,它基本上是所有属性的标记。 该接口实现了几个功能(多于一个)。我需要做的是当我有一组AttributesInterfaces,即
Collection<AttributeInterface> collectionObject;
我需要按字段排序该集合&#34; dateEnabled&#34;这是属性的一部分,然后需要选择最新的属性,即最后创建的属性,并对其执行操作,例如attribute.disable()。
我是lambdas的新手,但我想使用lambdas因为它们提供的并行性。但是,我无法确定构造应该是什么,即最有效的方法是什么。我的意思是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-单个抽象方法或(功能接口)]可以对ZonedDateTime类型进行那种比较?我的意思是来自 java.utils.functions
真的很感激。
答案 0 :(得分:1)
发现它适用于java 8
Collections.sort((List<AttributeInterface>) collectionObject, (obj1, obj2) ->
obj1.getDateEnabled().compareTo(obj2.getDateEnabled() ) );