在java中编写这种for循环的优雅方式

时间:2013-12-24 03:53:55

标签: java loops

目前,我只是使用它:


for (ClassX value : listabc) {
    if (value.Id.equals(currentId)) {
        return value;
    } else if (value.Id.equals(defaultId)) {
        def = value;
    }
}
if (def != null) {
    return def;
}
return listabc.get(0);

对于给定的currentId和defaultId,循环遍历listabc,如果listabc有currentId,则返回它,否则如果它有defaultId,则返回它,否则返回列表的第一个元素。

请注意,如果listabc同时包含currentId和defaultId,则currentId应该返回。

这段代码看起来有点难看,任何人都可以帮忙提供一个优雅的代码吗?我的大脑停止工作..

2 个答案:

答案 0 :(得分:4)

我写得有点整洁:

ClassX def;
for (ClassX value : listabc) {
   if (value.Id.equals(currentId)) return value;
   if (value.Id.equals(defaultId)) def = value;
}
return def == null ? listabc.get(0) : def;

答案 1 :(得分:0)

您需要def,这是一种方式:

ClassX def = null;
for (ClassX value : listabc) { // Do a null check here on listabc
    if (value != null && value.Id.equals(currentId)) {
        return value;
    } 
    def = def == null && value != null && value.Id.equals(defaultId) value ? null;
 }
 return def != null ? def : listabc.get(0);