1.使用Iterator遍历时,for
循环优于while
循环。例如:
for(Iterator i = list.iterator(); i.hasnext();) // use for-loop
Iterator i = list.iterator(); // use while-loop
while (i.hasnext()){ //balabala}
为什么呢?首先,for
循环更简介。其次,使用的iterator
变量i
为临时变量。这意味着什么?意味着避免了粘帖复制带来潜在的Bug。不信?请找出如下Bug:
Iterator i = list1.iterator();
while (i.hasnext()){
//balabala
}
// copy-and-paste is my favorate...
Iterator i2 = list12.iterator();
while (i.hasnext()){
//balabala
}
2.关于for
循环,foreach
比传统的for
循环要好。例如:
for(Element e : list) // better
for(int i = 0; i < list.length; i ++) // traditional idiom
原因是foreach
避免了可能出错的下标遍历方式,其次更简明直观,直达循环的语义(就是要对每个元素遍历,而不是关心具体的下标运算)。
另附一个Bug,来自Item 49: Prefer primitive types to boxed primitives,各位可以找一找。
Comperator<Integer> order = new Compartor<Integer>() {
public int compare(Integer first, Integer second){
return first < second ? -1 : first == second ? 0 : 1;
}
}