Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Otimização no método obterProximoEvento da classe AgendaEventos #18

Open
MarcosViniSil opened this issue Aug 27, 2023 · 1 comment
Open

Comments

@MarcosViniSil
Copy link

MarcosViniSil commented Aug 27, 2023

Código apresentado

public void obterProximoEvento() {
    /*Set<LocalDate> dateSet = eventosMap.keySet();
    Collection<Evento> values = eventosMap.values();*/
    //eventosMap.get();
    LocalDate dataAtual = LocalDate.now();
    LocalDate proximaData = null;
    Evento proximoEvento = null;
    Map<LocalDate, Evento> eventosTreeMap = new TreeMap<>(eventosMap);
    for (Map.Entry<LocalDate, Evento> entry : eventosTreeMap.entrySet()) {
      if (entry.getKey().isEqual(dataAtual) || entry.getKey().isAfter(dataAtual)) {
        proximaData = entry.getKey();
        proximoEvento = entry.getValue();
        System.out.println("O próximo evento: " + proximoEvento + " acontecerá na data " + proximaData);
        break;
      }
    }
  }

É um código funcional,que cumpre sua função declarada,obter um próximo evento dado uma data atual,como o código tem como objetivo imprimir apenas 1 vez o próximo evento podemos omitir a declaração das variáveis proximaData e proximoEvento pois já está claro que o método irá apresentar o próximo evento,que consequentemente possui uma data,segue abaixo uma sugestão de otimização:

	public void obterProximoEvento() {
		
	LocalDate dataAtual = LocalDate.now();
		
        Map<LocalDate, Evento> eventosTreeMap = new TreeMap<>(eventosMap);
	for(Entry<LocalDate,Evento> e : eventosTreeMap.entrySet()) {
			
		if(e.getKey().equals(dataAtual)||e.getKey().isAfter(dataAtual)) {
			 System.out.println("O próximo evento: " + e.getValue() + " acontecerá na data " +e.getKey() ); 
				break;
			}
		}

	}

OBS:É apenas uma sugestão vindo de um estudante que gosta muito de programar

@cami-la
Copy link
Owner

cami-la commented Aug 28, 2023

Show, amigo! Muito bom!

Não sei se você percebeu, mas no comecinho quando eu estava resolvendo este método, eu fiz desse mesmo jetinho que você fez, sem criar as variáveis temporárias:

LocalDate dataAtual = LocalDate.now();
LocalDate proximaData = null;
Evento proximoEvento = null;

Porém para quem está começando a entender sobre POO e até Collections, achei interessante deixar o mais claro possivel. Assim, para os alunos entenderem o que significa o entry.getKey() e o entry.value();

De qualquer forma está muito bom! Parabéns pelo progresso! (:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants