Muss er unbedingt die kompletten For-Schleifen durchlaufen?
Die Innere Schleife wird ja nur dann ausgeführt, wenn die Bedingung waveStart.get(i) < distance && waveStop.get(i) > distance erfüllt ist.
Wenn die Bedingung einmal nicht erfüllt wurde, kann sie dann nochmal erfüllt werden?
Wenn nein, würde ich eine While-Schleife nehmen oder sogar den Teil zu einer Rekursion umbauen.