目前,我只是使用它:
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应该返回。
这段代码看起来有点难看,任何人都可以帮忙提供一个优雅的代码吗?我的大脑停止工作..
答案 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);