使用接口将方法应用于ArrayList

我正在复习考试。 关于旧测试的问题是:使用接口,编写一个方法,将任意方法应用于ArrayList的每个元素。 arraylist和method都是该方法的参数。

一个可行的解决方案是:

public  someMethod() { scanner GLaDOS = new (someArray); someArray.useDelimiter(","); for (i = 0; i < someArray.length; i++) { someOtherMethod(someArray[i]); } } 

我会期待这样的事情:

 // define the interface to represent an arbitrary function interface Function { void Func(T el); } // now the method to apply an arbitrary function to the list  void applyFunctionToArrayList(ArrayList list, Function func){ // iterate over the list for(T item : list){ // invoke the "arbitrary" function func.Func(item); } } 

这个问题很模糊,但这可能意味着返回一个新的ArrayList,所以这可能是另一个可接受的答案

 // define the interface to represent an arbitrary function interface Function { T Func(T el); } // now the method to apply an arbitrary function to the list  ArrayList applyFunctionToArrayList(ArrayList list, Function func){ ArrayList newList = new ArrayList(); // iterate over the list for(T item : list){ // invoke the "arbitrary" function newList.add(func.Func(item)); } } 

在旁注中,您可以比如调用应用程序(例如,将列表中的每个数字加倍):

 ArrayList list = Arrays.asList(1.0, 2.0, 3.0); ArrayList doubledList = applyFunctionToArrayList(list, new Function{ Double Func(Double x){ return x * 2; } });