首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改此code[refactoring]的更好方法是什么

修改此code[refactoring]的更好方法是什么
EN

Stack Overflow用户
提问于 2012-02-21 16:43:52
回答 4查看 86关注 0票数 2

有没有更好的方式来呈现这段代码?

代码语言:javascript
复制
while (vIter.hasNext()) {
    Long actId = (Long) vIter.next();
    if (actId == -1) 
        vRetActIds.put(actId,"N");
    else
        vRetActIds.put(actId,"N");
}

在这里,我觉得if else可以变得多余。在迭代器列表中有一个值-1,如果存在,应该将其设为"N"

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-21 16:46:03

你的两个指令在if的两边是相同的!我怀疑你贴错了什么东西。让我们假设它们是不同的("Y""N") :)您可以简单地使用ternary operator编写它

代码语言:javascript
复制
while (vIter.hasNext()) {
    Long actId =(Long)vIter.next();
    vRetActIds.put(actId, actId == -1 ? "N" : "Y");
}

EDIT:从你的评论来看,似乎你每次都想把值设置为'N‘?在这种情况下,您根本不需要if ...

代码语言:javascript
复制
while (vIter.hasNext()) {
    vRetActIds.put((Long)vIter.next(), "N");
}
票数 5
EN

Stack Overflow用户

发布于 2012-02-21 16:52:03

如果我们可以假设您在新的java中使用了某种类型的Collection,那么这样的代码会更简洁,不会因为空指针而崩溃?

代码语言:javascript
复制
Long MINUS_ONE = Long.valueOf(-1);
while (Long actId : vIter) 
{
    vRetActIds.put(actId, MINUS_ONE.equals(actiId) ? "N" : "Y");
}
票数 2
EN

Stack Overflow用户

发布于 2012-02-21 16:46:41

三元条件语句就可以了。

代码语言:javascript
复制
vRetActIds.put(actId, actiId == -1 ? "N" : "Y");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9374471

复制
相关文章

相似问题

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