Java 使用接口将方法应用于ArrayList
我在复习准备考试。旧测试中的一个问题是:使用接口编写一个方法,将任意方法应用于ArrayList的每个元素。arraylist和method都是该方法的参数 可行的解决办法是: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++) {
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;
}
});