首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >针对布尔值测试true或针对字符串测试notnull / empty

针对布尔值测试true或针对字符串测试notnull / empty
EN

Stack Overflow用户
提问于 2018-06-27 05:34:48
回答 2查看 63关注 0票数 0

为了获得具有True或NotNull/NotEmpty值的节的名称,我从下面的Java对象创建了一个Map,然后对其进行迭代。

代码语言:javascript
复制
public class Assessment {

private Boolean section1Checkbox1;
private Boolean section1Checkbox2;
private Boolean section1Comments;

private Boolean section2Checkbox1;
private Boolean section2Checkbox2;
private Boolean section2Comments;

more sections.....

我已经将对象转换为Map,然后对其进行迭代:

代码语言:javascript
复制
    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)?(或者更好的方法?)

EN

回答 2

Stack Overflow用户

发布于 2018-06-27 06:08:25

这段代码很好用,感谢@Lino:

代码语言:javascript
复制
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]);
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2018-06-27 06:41:00

下面是一些代码,它展示了使用lambda和流进行集合过滤和转换的更常用的Java方法: 8+:

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51051665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档