【发布时间】:2020-04-20 13:18:56
【问题描述】:
我已经用 Java 编写了 2 个方法。第二种方法对我来说看起来更干净,因为我来自 python 背景,但我认为它会比第一种慢,因为 indexOf() 也进行迭代?在这种情况下,有没有办法正确使用 for in 循环?另外,如果有更好的方法(没有 Streams),怎么做?
private ArrayList<MyObject> myObjects;
第一种方法:
private int findObject(String objectName) {
for(int i=0; i<this.myObjects.size(); i++) {
MyObject myObject = this.myObjects.get(i);
if(myObject.getName().equals(objectName)) return i;
}
return -1;
}
第二种方法:
private int findObject(String objectName) {
for(MyObject myObject: this.myObjects) {
if(myObject.getName().equals(objectName)) return this.myObjects.indexOf(myObject);
}
return -1;
}
【问题讨论】:
-
两者之间的差异可以忽略不计,我认为第二种方法更“昂贵”,因为您首先遍历数组,然后在满足特定条件时查找项目。使用适合您需要的
for loop。如果您需要索引,请使用常规 for 循环(您的第一种方法)。 -
是的,我说的慢是指更“贵”。有没有办法在 python 中做类似
for i, myObject in enumerate(myObjects)之类的事情,但使用 forIn 循环而不是标准 for 循环?