il fatto che ci siano 3 posizioni nell'array di stringhe non vuol dire che debbano per forza aver dentro qualcosa di non nullo:

codice:
if (d!=null && (d.equals(dataF) || d.equals(dataF2))) {
//...metti il codice che già c'è
}
else{
  out.println("In "+k+" c'è un null");
}
prova a vedere cosa succede