为了获得具有True或NotNull/NotEmpty值的节的名称,我从下面的Java对象创建了一个Map,然后对其进行迭代。
public class Assessment {
private Boolean section1Checkbox1;
private Boolean section1Checkbox2;
private Boolean section1Comments;
private Boolean section2Checkbox1;
private Boolean section2Checkbox2;
private Boolean section2Comments;
more sections.....
我已经将对象转换为Map,然后对其进行迭代:
Map<String, Object> map = oMapper.convertValue(needsAssessment, Map.class);
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
if (pair.getValue()==true||NotNull) {
// Get Section Name
String[] sectionName = pair.getKey().toString().split("(?=\\p{Upper})");
System.out.println(sectionName[0]);
}
}
pair.getValue()测试出错:
有没有办法在一条语句中测试true (如果是布尔值)和NotNull或Empty (如果是string)?(或者更好的方法?)
发布于 2018-06-27 06:08:25
这段代码很好用,感谢@Lino:
Map<String, Object> map = oMapper.convertValue(assessment, Map.class);
System.out.println(map);
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
if (pair.getValue() instanceof Boolean) {
Boolean currentCheckbox = (Boolean) pair.getValue();
// Get Section/Subject Name
System.out.println(pair.getKey());
if (currentCheckbox) {
String[] sectionName = pair.getKey().toString().split("(?=\\p{Upper})");
System.out.println(sectionName[0]);
}
}
}
发布于 2018-06-27 06:41:00
下面是一些代码,它展示了使用lambda和流进行集合过滤和转换的更常用的Java方法: 8+:
Map<String, Object> map = oMapper.convertValue(assessment, Map.class);
map.entrySet()
// stream all entries
.stream()
// filter by value being TRUE (this is null safe)
.filter((e) -> Boolean.TRUE.equals(e.getValue()))
// transform entry to key split by regex
.map(e -> e.getKey().split("(?=\\p{Upper})"))
// transform to first array item
.map(a -> a[0])
// print
.forEach(System.out::println);
https://stackoverflow.com/questions/51051665
复制相似问题