No alt ... partiamo dall'inizio. Innanzitutto la tua collezione è basata su un array a capacità prefissata e la collezione non è quindi espandibile. Va bene, non è questo il problema. Vedo che in inserisci() fai una cosa particolare: il primo elemento ti serve per capire se gli altri aggiunti dopo sono dello stesso identico tipo. Oltre che essere più lungo il codice è anche fin troppo restrittivo! Nelle collezioni del framework le cose non sono gestite così: se si vuole ordinare una collezione (solo List, chiaramente) allora tutti gli elementi devono essere "mutualmente" comparabili. Ma questo non è rafforzato/controllato da alcun test!! Se due elementi nel List non sono mutualmente comparabili, sbucherà fuori una eccezione ClassCastException al primo confronto non appropriato.
Ora .... perché devi complicarti la vita??
Passiamo all'iteratore: tu vuoi che faccia delle ricerche con una logica un po' particolari. Ma un iteratore dovrebbe solo iterare e basta, secondo l'ordine dettato dalla implementazione della collezione. Ora ... la tua collezione non mi sembra "sorted" ovvero mantenuta ordinata internamente in base al contenuto degli elementi.
E .... quindi???