Como varrer a lista para atende uma condição

Bem trabalhando com lista não achei um exemplo no meu caso como fazer um fechamento ou desdobramento como queiram chamar, mais objetivo é usar recurso que arraylist pode proporcionar, esse tipo tópico pode despertar curiosidade lembrando que as combinações quanto mais números maior quantidade de volantes.
Acredito que isso deve ser muito batido na rede, mais não achei nada que possa me ajudar, se alguém se disponibilizar da uma força já fico agradecido:

vamos ao assunto:
primeiro:= tenho que lê um arquivo com está abaixo
segundo: tenho que varrer essa lista e compara os volantes para atender uma condição, neste caso 3.
terceiro:= exibir resultado como está abaixo.

package bola;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Set;
import java.util.TreeSet;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Leitura {
static Set lista = new TreeSet();
// metodo para ler arquivo txt
public void LerArquivo() {
try {
FileReader fr = new FileReader(“D:\Matriz.txt”);
BufferedReader br = new BufferedReader(fr);
String temp;

		while ((temp = br.readLine()) != null) {
			lista.add(temp);
		}
	} catch (FileNotFoundException ex) {
		System.out.println("Arquivo nao encontrado!");
	} catch (IOException ex) {
		Logger.getLogger(Leitura.class.getName()).log(Level.SEVERE, null, ex);
	}
}

// exibir lista no console
public static void exibirLista() {
	for (String atual : lista) {
		System.out.println(atual);
	}
}

// METODO PARA COMPARAR AS LISTAS
public static void compararLista() {
	Set<String> list1 = new TreeSet();
	for (int i = 0; i < lista.size(); i++) {
		if (lista.equals(list1)) {
			lista.remove(lista);
		}
	}
	for (String atual : list1) {
		System.out.println(atual);
	}
}	

public static void main(String[] args) {
	Leitura lista = new Leitura();
	lista.LerArquivo();
	lista.exibirLista();
	// lista.compararLista();

}

}

resultado matriz

01 02 03 04 06
01 02 03 05 08
01 02 04 07 08
01 03 06 07 08
01 04 05 06 07
02 03 04 05 07
02 05 06 07 08
03 04 05 06 08

Leitura matriz

01 02 03 04 05
01 02 03 04 06
01 02 03 04 07
01 02 03 04 08
01 02 03 05 06
01 02 03 05 07
01 02 03 05 08
01 02 03 06 07
01 02 03 06 08
01 02 03 07 08
01 02 04 05 06
01 02 04 05 07
01 02 04 05 08
01 02 04 06 07
01 02 04 06 08
01 02 04 07 08
01 02 05 06 07
01 02 05 06 08
01 02 05 07 08
01 02 06 07 08
01 03 04 05 06
01 03 04 05 07
01 03 04 05 08
01 03 04 06 07
01 03 04 06 08
01 03 04 07 08
01 03 05 06 07
01 03 05 06 08
01 03 05 07 08
01 03 06 07 08
01 04 05 06 07
01 04 05 06 08
01 04 05 07 08
01 04 06 07 08
01 05 06 07 08
02 03 04 05 06
02 03 04 05 07
02 03 04 05 08
02 03 04 06 07
02 03 04 06 08
02 03 04 07 08
02 03 05 06 07
02 03 05 06 08
02 03 05 07 08
02 03 06 07 08
02 04 05 06 07
02 04 05 06 08
02 04 05 07 08
02 04 06 07 08
02 05 06 07 08
03 04 05 06 07
03 04 05 06 08
03 04 05 07 08
03 04 06 07 08
03 05 06 07 08
04 05 06 07 08

Não entendi o problema. Pelo título, vc não está conseguindo varrer a lista, mas isso está implementado no código.

bom dia
bem não conseguir chegar fazer a comparação para chegar “resultado matriz”, por isso o titulo de como fazer essa varredura usando array-list. para ser mais especifico escolhi 8 dezenas para combinar em conjunto de 5 em 5, o total dessa combinação matematicamente da 56 volantes, vamos supor que eu não tenha dinheiro para jogar os 56 volantes, então aqui entra o fechamento, onde especifico para ter uma garantia minima de 3 acertos ou seja qualquer conjunto de 3 sorteadas entre as 8 tenho 100% três acertos e jogando apenas 8 volantes. é trabalhando com arraylist.