0
我有一個靜態方法,它使用java 8流標識一個集合中的匹配類型。在Java 8流中返回第一個匹配(類似於_.find)
而不是使用.filter
和.findAny
,我想使用類似lodash的_.find的方法,將「通過集合的元素進行迭代,並返回第一個元素斷言返回truthy的。」
一個「發現」類型的方法大概使代碼更高性能和簡潔
public static List<Class> types = Arrays.asList(
Contact.class,
Response.class,
Request.class
);
public static Optional<Class> resolveTypeFromFieldNames(Set<String> itemFields) {
return types
.stream()
.filter(itemType -> {
Set<String> fields = Arrays.stream(itemType.getDeclaredFields())
.filter(f -> !f.isSynthetic())
.map(Field::getName)
.collect(Collectors.toSet());
return itemFields.equals(fields);
})
.findAny();
}
謝謝,這很好。 – eblahm