一个java面试问题。在java编程中,除了循环构造之外,还有什么方法可以遍历给定的集合(数组)并处理集合的每个元素吗。
递归是实现的一种方法
void it(Iterator i) {
if (i.hasNext()) {
System.out.println(i.next());
it(i);
}
}
除了递归,commons集合还有一些实用方法,可以用来对集合执行操作。请注意,此api还在内部使用循环构造。但客户端代码看起来像:
CollectionUtils.forAllDo(
yourCollection,
new Closure() {
void execute(java.lang.Object element) {
// do smt with element
}
}
);
请在此处查看CollectionUtils:http://commons.apache.org/collections/apidocs/org/apache/commons/collections/Closure.html
递归?
是的,您可以递归地遍历一个函数以获得相同的功能:
public void iterate(int[] array, int index){
if (index >= array.length){
return;
}else{
//work with element at array[index]
iterate(array, index+1);
}
}
您可以将迭代解决方案交换为递归解决方案。循环是迭代的,所以只需创建一个递归解决方案即可。
使用递归,我们在不使用循环的情况下迭代数组或集合。见以下递归方法:
public static void iterateArray(int nums[], int index) {
if (nums.length == index) {
return;
}
System.out.print(nums[index] + " ");
iterateArray(nums, index + 1);
}