Criar buscador para percorrer ArrayList

2 respostas
java
I

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();

}
}

2 Respostas

S

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.

I

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 !!

Criado 16 de março de 2018
Ultima resposta 21 de mar. de 2018
Respostas 2
Participantes 2