有没有更好的方法来展示此代码?
while (vIter.hasNext()) {
Long actId = (Long) vIter.next();
if (actId == -1)
vRetActIds.put(actId,"N");
else
vRetActIds.put(actId,"N");
}
在这里,我觉得if else
可以变得多余。在迭代器列表中有一个值-1
,如果存在,则应"N"
。
答案 0 :(得分:5)
你的两条指令在if的两边都是一样的!我怀疑你贴错了什么。我们假设它们不同("Y"
和"N"
):)您可以使用ternary operator简单地编写它:
while (vIter.hasNext()) {
Long actId =(Long)vIter.next();
vRetActIds.put(actId, actId == -1 ? "N" : "Y");
}
编辑:根据您的评论,您似乎确实希望每次都将值设置为“N”?在这种情况下,您根本不需要if
...
while (vIter.hasNext()) {
vRetActIds.put((Long)vIter.next(), "N");
}
答案 1 :(得分:2)
如果我们可以假设你在新的java中使用某种类型的Collection,那么这样的东西会更简洁,并且不会因为空指针而崩溃?
Long MINUS_ONE = Long.valueOf(-1);
while (Long actId : vIter)
{
vRetActIds.put(actId, MINUS_ONE.equals(actiId) ? "N" : "Y");
}
答案 2 :(得分:1)
三元条件陈述没问题。
vRetActIds.put(actId, actiId == -1 ? "N" : "Y");
答案 3 :(得分:1)
让我们假设您从List这样的地方获取迭代器:
List<Long> list;
Iterator<Long> vIter = list.iterator();
如果是这种情况(它或类似的东西,几乎必须如此),那么你可以完全放弃迭代器并使你的代码更容易阅读,因此:
for (Long actId: list)
vRetActIds.put(actId, "N");