我有一个UserProfile
包含用户数据的类,如下所示:
class UserProfile {
private String userId;
private String displayName;
private String loginId;
private String role;
private String orgId;
private String email;
private String contactNumber;
private Integer age;
private String address;
// few more fields ...
// getter and setter
}
我需要计算非null
字段,以显示用户已填充的配置文件的百分比。还有一些,我不希望在百分比计算要考虑几个字段:userId
,loginId
和displayName
。
一种简单的方法是使用多个If
语句来获取非null字段,count
但这将涉及大量样板代码,并且还有一个Organization
我需要显示完成百分比的类。因此,我创建了一个实用程序函数,如下所示:
public static <T, U> int getNotNullFieldCount(T t,
List<Function<? super T, ? extends U>> functionList) {
int count = 0;
for (Function<? super T, ? extends U> function : functionList) {
count += Optional.of(t).map(obj -> function.apply(t) != null ? 1 : 0).get();
}
return count;
}
然后我按如下所示调用此函数:
List<Function<? super UserProfile, ? extends Object>> functionList = new ArrayList<>();
functionList.add(UserProfile::getAge);
functionList.add(UserProfile::getAddress);
functionList.add(UserProfile::getEmail);
functionList.add(UserProfile::getContactNumber);
System.out.println(getNotNullFieldCount(userProfile, functionList));
我的问题是,这是我不算数null
字段还是可以进一步改进的最佳方法。请提出建议。
您可以通过在给定的函数列表上创建Stream来简单地编写很多代码:
public static <T> long getNonNullFieldCount(T t, List<Function<? super T, ?>> functionList) {
return functionList.stream().map(f -> f.apply(t)).filter(Objects::nonNull).count();
}
这将返回null
每个函数返回的非字段的计数。每个函数都映射到将其应用于给定对象的结果,并且null
使用谓词过滤掉字段Objects::nonNull
。
我们的REST API接收一些JSON对象输入,其中一些字段要求为非空。这些可以是String/Intger,甚至可能是其他一些类实例作为引用。 我们试图找到一种方法来强制这些字段不为null,而不是API中null检查的正确方法。当前: 我们想要的是: 我们尝试了3件事: 1) 升级至jackson 2.0.6并使用annotation com。fasterxml。杰克逊。注释。JsonProp
以上是我通过json得到的,我需要将值分配给UITableView: 它返回0行,我是ios新手请帮助我如何将这些值分配给uitableview。 当做
我尝试使用Java8特性。 我有课 我的最后一个映射类是 因为我是刚到java的,我面临着要完成它的斗争,我尽了最大的努力。是否可以删除空文件和计数?提前致谢
我尝试使用Java8特性。 我有课 我有一个列表,我尝试按分组,并计算非空的和。示例: 我的预期输出是 我试着跟在后面 因为我是刚到java的,我面临着要完成它的斗争,我尽了最大的努力。是否可以删除空文件和计数?
问题内容: 我们的REST API接收一些JSON对象输入,其中某些字段必须不为null。这些可以是String / Integer,甚至可以是其他一些类实例作为参考。 我们正在尝试寻找一种方法来强制这些字段不为null,而不是在API中进行null检查的正确方法。当前: 我们想要的是这样的: 我们尝试了3件事: 1)升级到杰克逊2.0.6并使用注释com.fasterxml.jackson.an
问题内容: 我们的REST API接收一些JSON对象输入,其中某些字段必须不为null。这些可以是String / Integer,甚至可以是其他一些类实例作为参考。 我们正在尝试寻找一种方法来强制这些字段不为null,而不是在API中进行null检查的正确方法。当前: 我们想要的是这样的: 我们尝试了3件事: 1)升级到杰克逊2.0.6,并使用注释com.fasterxml.jackson.a