我有一个对象向量,我需要逐个比较它们.那是:
for (Object o1 : list) {
for (Object o2 : list) {
//Do something with o1 and o2
}
}
Run Code Online (Sandbox Code Playgroud)
无论如何使用这种方法我会比较任何两次!使用"C"风格的方法,我会这样做:
for (i=0; i<n-1; i++) {
for (j=i+1; j<n; j++) {
//Do something with list[i] and list[j]
}
}
Run Code Online (Sandbox Code Playgroud)
其中n是列表的长度.
有没有办法使用for-each循环?
加成
for-each循环的使用不是强制性的.无论如何,我关心的是表演问题.for-each循环是否比直接访问索引的简单快?
明确清楚你对C-for for循环的意图是什么 - 在每一对上完全循环一次,这样与反向成员相同的对,例如(a,b)和(b,a)不再被处理.这就是我建议的; 它也适用于Java.
但是,如果你绝对必须有增强的for循环,你可以有循环工作在子列表,与内部List的subList方法,从下一个元素.
for (Object o1 : list) {
List<Object> subList = list.subList(list.indexOf(o1) + 1, list.size());
for (Object o2 : subList) {
//Do something with o1 and o2
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3697 次 |
| 最近记录: |