需求:将一个list集合传入一个方法中,同时传入一个函数,根据传入函数的不同对集合做不同的处理
方法:定义一个接口,并定义一个方法option,测试中调用一个方法传入的参数是list和函数,函数就是该接口的实现类。
代码如下:
接口
package me.season.com;
import java.util.ArrayList;
public interface OptionMethod2 {
public ArrayList<Integer> option(ArrayList<Integer> list);
}
主要代码
package me.season.com;
import java.util.ArrayList;
public class test2 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
ArrayList<Integer> met = test2.met(list, new OptionMethod2(){
@Override
public ArrayList<Integer> option(ArrayList<Integer> list) {
ArrayList<Integer> arr = new ArrayList<>();
for (Integer ii : list) {
int i = ii*ii;
arr.add(i);
}
return arr;
}
});
for (Integer i : met) {
System.out.print(i+" ");
}
}
public static ArrayList<Integer> met(ArrayList<Integer> list,OptionMethod2 op){
ArrayList<Integer> arr = op.option(list);
return arr;
}
}
met方法中传入了一个需要处理的list集合,并new了一个接口,实现了option()方法
根据具体的实现方法,将list作了不同的处理。
正好最近学习Scala的函数式编程,就写了这么个程序来理解一下。