Ti consiglio di fare una lista di vettori, del tipo :
ArrayList<String[]> lst;
dove ogni elemento, quindi ogni vettore di stringhe, rappresenta un blocco, quindi leggi il file facendo tipo :
lst.add(new String[8]);
for(int i = 0; i < 8; i++){
lst.get(lst.size() - 1)[i] = reader.ReadLine();
}
lo fai finché non finisci il file.
Poi passi ad una seconda fase di analisi del tipo :
boolean ok = false;
for(int i = 0; i < lst.size(); i++){
int j = 0;
while (j < lst.size() && !ok){
if (i != j)
if (!(ok = controllo(lst.get(i), lst.get(j)))
j++
}
if (ok)
scrivi_blocco_su_file(lst.get(i));
}
il codice controlla un blocco con ogni blocco diverso da se stesso, e se ne trova almeno uno con le caratteristiche che vanno bene, si ferma nei controlli, scrive il blocco nel file e passa al successivo, ad esempio :
Blocchi
A1
B1
C1
A2
D1
confronto (solo sulla lettere):
A1 con B1, diversi
A1 con C1, diversi
A1 con A2, uguali, scrivo A1, termino
B1 con A1, diversi
B1 con C1, diversi
B1 con A2, diversi
B1 con D1, diversi, finiti, termino
C1 con A1, diversi
...
A2 con A1, ugualei, scrivo A2, termino
...
D1 con A2, diversi, finiti, termino
nessun blocco rimasto, termino
Output : A1, A2
spero di aver capito correttamente