Code: Select all
import java.util.*;
class Data{
    int value;
    public Data(int x){ this.value = x; }
    public String toString(){ return ""+value; }
}
class MyFilter {
  public boolean test(Data d){
     return d.value == 0;
  }
}
public class TestClass{
    
   public static void filterData(ArrayList<Data> dataList, MyFilter f){
      Iterator<Data> i = dataList.iterator();
      while(i.hasNext()){
           if(f.test(i.next())){
                i.remove();
           }
       }
   }
  public static void main(String[] args) {
        ArrayList<Data> al = new ArrayList<Data>();
        Data d = new Data(1); al.add(d);
        d = new Data(2); al.add(d);
        d = new Data(0); al.add(d);
        filterData(al, new MyFilter());  //1 
        System.out.println(al);
    }
}
========================================================
Add implements java.util.function.Predicate<Data> to MyFilter definition and replace the line at //1 with:
filterData(al, x -> x.value==0);
this is correct answer, it showing as wrong.