我有一个自定义对象列表,我想通过给定的 Id(自定义对象中的字段)查找对象。我正在为此编码,所以在比较字段时我找到了两个解决方案。
1
private Product getProduct(String productId,List<Product> productList){
for (int i = 0; i < productList.size(); i++) {
if (productId.equals(productList.get(i).getId())) {
return productList.get(i);
}
}
return null;
}
2.
private Product getProduct(String productId,List<Product> productList){
for (int i = 0; i < productList.size(); i++) {
if (productList.get(i).getId().equals(productId)) {
return productList.get(i);
}
}
return null;
}
区别在于 if
条件,我想知道哪一种比另一种更好,为什么,何时使用第一种方法,何时使用第二种方法?
最佳答案
自 equals()
是 required根据 Java 的定义,它们是对称的,两个片段之间没有区别。
两个片段都不是最优的,因为它们通过数字索引进行迭代,并检索 productList.get(i)
返回前两次。按索引迭代特别危险,因为传递 LinkedList<Product>
会大大减慢您的搜索速度。
更好的方法是使用 for-each 形式的循环:
for (Product p : productList) {
if (p.getId().equals(productId)) {
return p;
}
}
return null;
关于java - 从列表中遍历并查找对象字段的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40174624/