Criar buscador para percorrer ArrayList

Boa Tarde Pessoal !

Sou novo aqui no GUJ e gostaria de expor uma dificuldade que estou tendo.
Sou iniciante em Java e estou com o seguinte desafio:

é desenvolver dois programas de linha de comando. O primeiro, o “armazenador”, deverá processar um arquivo-texto de entrada armazenando-o da forma mais otimizada possível. O segundo, o “buscador”, deverá pesquisar os dados processados pelo “armazenador” com o melhor tempo de resposta possível.

O documento que esta sendo lido e neste formato:
20170219124557428;BFD99205;553254424704
20170206175709744;B5079387;553290673006 (composto por milhares de linhas iguais a esta)

No arquivo as colunas são separadas por “;” e as linhas por line feed. A primeira coluna representa a data de um evento (4 dígitos para o ano, 2 para o mês, 2 para o dia, 2 para as horas em formato 24h, 2 para os minutos, 2 para os segundos e 3 para os milissegundos), a coluna 2 é um identificador numérico hexadecimal de um evento e a última coluna é um identificador numérico do usuário que gerou o evento.

Conseguir realizar a entrada de dados e armazenar na ArrayList - Lista, agora estou tentando criar um buscador que percorra esta Array e encontre e traga o resultado inserido pelo usuario. A busca deve atender esses requisitos: O buscador receberá como argumentos data inicial (>=) e data final (<=).

Segue o código escrito ate agora:

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;

public class array2 {
public static void main (String[] args) throws IOException{

    InputStream is = new   FileInputStream("arquivo.txt");
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);

    ArrayList<String> lista = new ArrayList<String>();
			

    String s = br.readLine();
	
     while (s != null) {
	
	 s = br.readLine();

	 lista.add(s);
	
	 }	
	 br.close();		

}
}

Qual o motivo de sua classe se chamar array2 se ela não é um array?

Sugiro que crie uma classe Evento com os atributos:

Date   dataHora;
String idEvento;
long   idUsuario;

Faça um construtor que receba uma linha do arquivo como parâmetro, aí no construtor você processa a linha e inicializa os atributos.

Exemplo:

BufferedReader reader = new BufferedReader(new InputStreamReader(new   FileInputStream("arquivo.txt")));
List<Evento> eventos = new ArrayList<Evento>();
String linha = null;
while ((linha = reader.readLine()) != null) {
    eventos.add(new Evento(linha));
}
reader.close();

Tendo uma lista de eventos fica bem mais simples implementar seu buscador.

Muito obrigado pela ajuda, to tentando fazer aqui, mas como sou iniciante estou encontrando algumas dificuldades aqui. Quando consegui da um passo a mais aqui eu mando o codigo aqui, valeu !!