如何解决如何在不使用任何循环构造的情况下浏览集合?
| 一个Java面试问题。在Java编程中,除了循环构造可以遍历给定的collection(数组)并在collection的每个元素上工作之外,还有什么其他方法。解决方法
递归是做到这一点的一种方法
void it(Iterator i) {
if (i.hasNext()) {
System.out.println(i.next());
it(i);
}
}
, 除了递归公共集合以外,您还可以使用实用程序方法对集合进行处理。请注意,此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);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。