Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        5年前关闭。
                                                                                            
                
        
目前,我只是使用此:


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是应返回的那个。

这段代码看起来有点丑陋,有人可以提供优雅的代码吗?我的大脑停止工作了。

最佳答案

我会写得更整洁一些:

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;

10-08 17:06