Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用接口将方法应用于ArrayList_Java_Loops_Arraylist - Fatal编程技术网

Java 使用接口将方法应用于ArrayList

Java 使用接口将方法应用于ArrayList,java,loops,arraylist,Java,Loops,Arraylist,我在复习准备考试。旧测试中的一个问题是:使用接口编写一个方法,将任意方法应用于ArrayList的每个元素。arraylist和method都是该方法的参数 可行的解决办法是: public <object> someMethod() { scanner GLaDOS = new (someArray); someArray.useDelimiter(","); for (i = 0; i < someArray.length; i++) {

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

可行的解决办法是:

public <object> someMethod() {
    scanner GLaDOS = new (someArray);
    someArray.useDelimiter(",");
    for (i = 0; i < someArray.length; i++) {
        someOtherMethod(someArray[i]);
    }
}
public方法(){
扫描仪GLaDOS=新(someArray);
someArray.useDelimiter(“,”);
对于(i=0;i
我本以为会发生这样的事情:

// define the interface to represent an arbitrary function
interface Function<T> {
    void Func(T el);
}

// now the method to apply an arbitrary function to the list
<T> void applyFunctionToArrayList(ArrayList<T> list, Function<T> func){
    // iterate over the list
    for(T item : list){
        // invoke the "arbitrary" function
        func.Func(item);
    }
}
//定义表示任意函数的接口
接口函数{
无效函数;
}
//现在是将任意函数应用于列表的方法
void applyFunctionToArrayList(ArrayList列表,函数func){
//反复浏览列表
对于(T项:列表){
//调用“任意”函数
职能(项目);
}
}

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

// define the interface to represent an arbitrary function
interface Function<T> {
    T Func(T el);
}

// now the method to apply an arbitrary function to the list
<T> ArrayList<T> applyFunctionToArrayList(ArrayList<T> list, Function<T> func){
    ArrayList<T> newList = new ArrayList<T>();

    // iterate over the list
    for(T item : list){
        // invoke the "arbitrary" function
        newList.add(func.Func(item));
    }
}
//定义表示任意函数的接口
接口函数{
T函数(tel);
}
//现在是将任意函数应用于列表的方法
ArrayList applyFunctionToArrayList(ArrayList列表,函数func){
ArrayList newList=新的ArrayList();
//反复浏览列表
对于(T项:列表){
//调用“任意”函数
新增(函数函数(项));
}
}
另一方面,您可以调用应用程序,例如(例如,将列表中的每个数字加倍):

ArrayList list=Arrays.asList(1.0,2.0,3.0);
ArrayList doubledList=applyFunctionToArrayList(列表,
新功能{
双功能(双x){
返回x*2;
}
});

这就是测试中的问题吗?我不太清楚。@Andrew,是的,它只说了这么多。你的方法可以返回一个新的结果数组列表。@Paŭlo Ebermann:可以,但问题是应用到每个数组元素,我还是会更新的。谢谢!这看起来不错,我看看教授是否说这是他想要的。我认为函数接口应该是接口函数{R Func(tel);}
ArrayList<Double> list = Arrays.asList(1.0, 2.0, 3.0);
ArrayList<Double> doubledList = applyFunctionToArrayList(list, 
  new Function<Double>{
    Double Func(Double x){
        return x * 2;
    }
});