Java ArrayList IndexOf - Znajdowanie indeksu obiektów

Powiedzmy, że mam klasę

public class Data{
    public int k;
    public int l;
    public Data(int k, int l){
      this.k = k; 
      this.l = l;
    }
    public boolean equals(Date m){
      if(this.k == m.k && this.l = m.l)
           return true;
      return false;
    }
}

I dodaję kilka obiektów danych do listy ArrayList:

ArrayList<Data> holder = new ArrayList<Data>;
Data one = new Data(0,0);
Data two = new Data(0,4);
Data three = new Data(0,5);

Dlaczego indexOf nie znajduje tego ?:

holder.indexOf(new Data(0,4)); //returns -1

Czy indexOf jest lepszy niż przeglądanie całej listy tablicowej? Albo coś mi brakuje.

questionAnswers(4)

yourAnswerToTheQuestion