Skip to content

Commit

Permalink
Resolvendo exercicios Map
Browse files Browse the repository at this point in the history
Signed-off-by: Camila Cavalcante <[email protected]>
  • Loading branch information
cami-la committed Jul 12, 2023
1 parent ae057f3 commit 1c46e52
Show file tree
Hide file tree
Showing 15 changed files with 236 additions and 26 deletions.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
14 changes: 5 additions & 9 deletions out/production/collections-java-api-2023/main/java/map/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Exercícios:
<p>
Crie uma classe chamada "AgendaContatos" que utilize um Map para armazenar os contatos. Cada contato possui um nome como chave e um número de telefone como valor. Implemente os seguintes métodos:

- `adicionarContato(String nome, String telefone)`: Adiciona um contato à agenda, associando o nome do contato ao número de telefone correspondente.
- `adicionarContato(String nome, Integer telefone)`: Adiciona um contato à agenda, associando o nome do contato ao número de telefone correspondente.
- `removerContato(String nome)`: Remove um contato da agenda, dado o nome do contato.
- `exibirContatos()`: Exibe todos os contatos da agenda, mostrando o nome e o número de telefone de cada contato.
- `pesquisarPorNome(String nome)`: Pesquisa um contato pelo nome e retorna o número de telefone correspondente.
Expand All @@ -59,10 +59,9 @@ Crie uma classe chamada "Dicionario" que utilize um Map para armazenar palavras

### 1. Estoque de Produtos com Preço
<p>
Crie uma classe chamada "EstoqueProdutos" que utilize um Map para armazenar os produtos, suas quantidades em estoque e seus respectivos preços. Cada produto possui um nome como chave e um objeto Produto como valor, contendo quantidade e preço. Implemente os seguintes métodos:
Crie uma classe chamada "EstoqueProdutos" que utilize um Map para armazenar os produtos, suas quantidades em estoque e seus respectivos preços. Cada produto possui um código como chave e um objeto Produto como valor, contendo nome, quantidade e preço. Implemente os seguintes métodos:

- `adicionarProduto(String nome, int quantidade, double preco)`: Adiciona um produto ao estoque, juntamente com a quantidade disponível e o preço.
- `removerProduto(String nome)`: Remove um produto do estoque, dado o nome do produto.
- `adicionarProduto(long cod, String nome, int quantidade, double preco)`: Adiciona um produto ao estoque, juntamente com a quantidade disponível e o preço.
- `exibirProdutos()`: Exibe todos os produtos, suas quantidades em estoque e preços.
- `calcularValorTotalEstoque()`: Calcula e retorna o valor total do estoque, considerando a quantidade e o preço de cada produto.
- `obterProdutoMaisCaro()`: Retorna o produto mais caro do estoque, ou seja, aquele com o maior preço.
Expand All @@ -86,14 +85,11 @@ Crie uma classe chamada "ContagemPalavras" que utilize um Map para armazenar as

### 1. Agenda de Eventos

Crie uma classe chamada "AgendaEventos" que utilize um `Map` para armazenar os eventos e suas respectivas datas. Cada evento é representado por um objeto da classe "Evento", que possui atributos como nome e uma lista de atrações. Implemente os seguintes métodos:
Crie uma classe chamada "AgendaEventos" que utilize um `Map` para armazenar as datas e seus respectivos Eventos. Cada evento é representado por um objeto da classe "Evento", que possui atributos como nome do evento e o nome da atração. Implemente os seguintes métodos:

- `adicionarEvento(Evento evento)`: Adiciona um evento à agenda.
- `removerEvento(String nome)`: Remove um evento da agenda, dado o nome do evento.
- `adicionarEvento(LocalDate data, String nome, String atracao)`: Adiciona um evento à agenda.
- `exibirAgenda()`: Exibe a agenda de eventos em ordem crescente de data.
- `obterProximoEvento()`: Retorna o próximo evento que ocorrerá.
- `contarEventosNoMes(int mes, int ano)`: Retorna a quantidade de eventos que ocorreram em um determinado mês e ano.
- `contarAtracoes(String nomeAtracao)`: Retorna a quantidade de vezes que uma determinada atração se apresentou em todos os eventos da agenda.

### 2. Livraria Online
<p>
Expand Down
Binary file not shown.
55 changes: 53 additions & 2 deletions src/main/java/map/OperacoesBasicas/AgendaContatos.java
Original file line number Diff line number Diff line change
@@ -1,2 +1,53 @@
package main.java.map.OperacoesBasicas;public class AgendaContatos {
}
package main.java.map.OperacoesBasicas;

import java.util.HashMap;
import java.util.Map;

public class AgendaContatos {
//atributo
private Map<String, Integer> agendaContatoMap;

public AgendaContatos() {
this.agendaContatoMap = new HashMap<>();
}

public void adicionarContato(String nome, Integer telefone) {
agendaContatoMap.put(nome, telefone);
}

public void removerContato(String nome) {
if(!agendaContatoMap.isEmpty()) {
agendaContatoMap.remove(nome);
}
}

public void exibirContatos() {
System.out.println(agendaContatoMap);
}

public Integer pesquisarPorNome(String nome) {
Integer numeroPorNome = null;
if(!agendaContatoMap.isEmpty()) {
numeroPorNome = agendaContatoMap.get(nome);
}
return numeroPorNome;
}

public static void main(String[] args) {
AgendaContatos agendaContatos = new AgendaContatos();

agendaContatos.adicionarContato("Camila", 123456);
agendaContatos.adicionarContato("Camila", 5665);
agendaContatos.adicionarContato("Camila Cavalcante", 1111111);
agendaContatos.adicionarContato("Camila DIO", 654987);
agendaContatos.adicionarContato("Maria Silva", 1111111);
agendaContatos.adicionarContato("Camila", 44444);

agendaContatos.exibirContatos();

agendaContatos.removerContato("Maria Silva");
agendaContatos.exibirContatos();

System.out.println("O número é: " + agendaContatos.pesquisarPorNome("Camila DIO"));
}
}
57 changes: 55 additions & 2 deletions src/main/java/map/Ordenacao/AgendaEventos.java
Original file line number Diff line number Diff line change
@@ -1,2 +1,55 @@
package main.java.map.Ordenacao;public class AgendaEventos {
}
package main.java.map.Ordenacao;

import java.time.LocalDate;
import java.time.Month;
import java.util.*;

public class AgendaEventos {
//atributo
private Map<LocalDate, Evento> eventosMap;

public AgendaEventos() {
this.eventosMap = new HashMap<>();
}

public void adicionarEvento(LocalDate data, String nome, String atracao) {
//Evento evento = new Evento(nome, atracao);
eventosMap.put(data, new Evento(nome, atracao));
}

public void exibirAgenda() {
Map<LocalDate, Evento> eventosTreeMap = new TreeMap<>(eventosMap);
System.out.println(eventosTreeMap);
}

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 : eventosMap.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;
}
}
}
public static void main(String[] args) {
AgendaEventos agendaEventos = new AgendaEventos();
agendaEventos.adicionarEvento(LocalDate.of(2022, Month.JANUARY, 15), "Evento 1", "Atração 1");
agendaEventos.adicionarEvento(LocalDate.of(2023, Month.FEBRUARY, 13), "Evento 2", "Atração 2");
agendaEventos.adicionarEvento(LocalDate.of(2000, 8, 15), "Evento 3", "Atração 3");
agendaEventos.adicionarEvento(LocalDate.of(2023, Month.MARCH, 12), "Evento 4", "Atração 4");

agendaEventos.exibirAgenda();

agendaEventos.obterProximoEvento();


}
}
28 changes: 27 additions & 1 deletion src/main/java/map/Ordenacao/Evento.java
Original file line number Diff line number Diff line change
@@ -1,2 +1,28 @@
package main.java.map.Ordenacao;public class Evento {
package main.java.map.Ordenacao;

public class Evento {
//atributos
private String nome;
private String atracao;

public Evento(String nome, String atracao) {
this.nome = nome;
this.atracao = atracao;
}

public String getNome() {
return nome;
}

public String getAtracao() {
return atracao;
}

@Override
public String toString() {
return "Evento{" +
"nome='" + nome + '\'' +
", atracao=" + atracao +
'}';
}
}
4 changes: 2 additions & 2 deletions src/main/java/map/Ordenacao/LivrariaOnline.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public Map<String, Livro> pesquisarLivrosPorAutor(String autor) {

public Livro obterLivroMaisCaro() {
Livro livroMaisCaro = null;
double precoMaisAlto = Double.NEGATIVE_INFINITY;
double precoMaisAlto = -1;
for (Map.Entry<String, Livro> entry : livros.entrySet()) {
Livro livro = entry.getValue();
if (livro.getPreco() > precoMaisAlto) {
Expand All @@ -62,7 +62,7 @@ public Livro obterLivroMaisCaro() {

public Livro exibirLivroMaisBarato() {
Livro livroMaisCaro = null;
double precoMaisBaixo = Double.POSITIVE_INFINITY;
double precoMaisBaixo = -1;
for (Map.Entry<String, Livro> entry : livros.entrySet()) {
Livro livro = entry.getValue();
if (livro.getPreco() < precoMaisBaixo) {
Expand Down
55 changes: 55 additions & 0 deletions src/main/java/map/Pesquisa/EstoqueProdutos.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,59 @@
package main.java.map.Pesquisa;

import java.util.HashMap;
import java.util.Map;

public class EstoqueProdutos {
//atributo
private Map<Long, Produto> estoqueProdutosMap;

public EstoqueProdutos() {
this.estoqueProdutosMap = new HashMap<>();
}

public void adicionarProduto(long cod, String nome, int quantidade, double preco) {
estoqueProdutosMap.put(cod, new Produto(nome, preco, quantidade));
}

public void exibirProdutos() {
System.out.println(estoqueProdutosMap);
}

public double calcularValorTotalEstoque() {
double valorTotalEstoque = 0d;
if(!estoqueProdutosMap.isEmpty()) {
for(Produto p : estoqueProdutosMap.values()) {
valorTotalEstoque += p.getQuantidade() * p.getPreco();
}
}
return valorTotalEstoque;
}

public Produto obterProdutoMaisCaro() {
Produto produtoMaisCaro = null;
double maiorPreco = Double.MIN_VALUE;
if (!estoqueProdutosMap.isEmpty()) {
for (Produto p : estoqueProdutosMap.values()) {
if(p.getPreco() > maiorPreco) {
produtoMaisCaro = p;
}
}
}
return produtoMaisCaro;
}

public static void main(String[] args) {
EstoqueProdutos estoque = new EstoqueProdutos();
estoque.exibirProdutos();

estoque.adicionarProduto(1L, "Produto A", 10, 5.0);
estoque.adicionarProduto(2L, "Produto B", 5, 10.0);
estoque.adicionarProduto(3L, "Produto C", 2, 15.0);
estoque.adicionarProduto(8L, "Produto D", 2, 20.0);

estoque.exibirProdutos();

System.out.println("Valor total do estoque: R$" + estoque.calcularValorTotalEstoque());
System.out.println("Produto mais caro: " + estoque.obterProdutoMaisCaro());
}
}
35 changes: 34 additions & 1 deletion src/main/java/map/Pesquisa/Produto.java
Original file line number Diff line number Diff line change
@@ -1,2 +1,35 @@
package main.java.map.Pesquisa;public class Produto {
package main.java.map.Pesquisa;

public class Produto {
//atributos
private String nome;
private double preco;
private int quantidade;

public Produto(String nome, double preco, int quantidade) {
this.nome = nome;
this.preco = preco;
this.quantidade = quantidade;
}

public String getNome() {
return nome;
}

public double getPreco() {
return preco;
}

public int getQuantidade() {
return quantidade;
}

@Override
public String toString() {
return "Produto{" +
"nome='" + nome + '\'' +
", preco=" + preco +
", quantidade=" + quantidade +
'}';
}
}
14 changes: 5 additions & 9 deletions src/main/java/map/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Exercícios:
<p>
Crie uma classe chamada "AgendaContatos" que utilize um Map para armazenar os contatos. Cada contato possui um nome como chave e um número de telefone como valor. Implemente os seguintes métodos:

- `adicionarContato(String nome, String telefone)`: Adiciona um contato à agenda, associando o nome do contato ao número de telefone correspondente.
- `adicionarContato(String nome, Integer telefone)`: Adiciona um contato à agenda, associando o nome do contato ao número de telefone correspondente.
- `removerContato(String nome)`: Remove um contato da agenda, dado o nome do contato.
- `exibirContatos()`: Exibe todos os contatos da agenda, mostrando o nome e o número de telefone de cada contato.
- `pesquisarPorNome(String nome)`: Pesquisa um contato pelo nome e retorna o número de telefone correspondente.
Expand All @@ -59,10 +59,9 @@ Crie uma classe chamada "Dicionario" que utilize um Map para armazenar palavras

### 1. Estoque de Produtos com Preço
<p>
Crie uma classe chamada "EstoqueProdutos" que utilize um Map para armazenar os produtos, suas quantidades em estoque e seus respectivos preços. Cada produto possui um nome como chave e um objeto Produto como valor, contendo quantidade e preço. Implemente os seguintes métodos:
Crie uma classe chamada "EstoqueProdutos" que utilize um Map para armazenar os produtos, suas quantidades em estoque e seus respectivos preços. Cada produto possui um código como chave e um objeto Produto como valor, contendo nome, quantidade e preço. Implemente os seguintes métodos:

- `adicionarProduto(String nome, int quantidade, double preco)`: Adiciona um produto ao estoque, juntamente com a quantidade disponível e o preço.
- `removerProduto(String nome)`: Remove um produto do estoque, dado o nome do produto.
- `adicionarProduto(long cod, String nome, int quantidade, double preco)`: Adiciona um produto ao estoque, juntamente com a quantidade disponível e o preço.
- `exibirProdutos()`: Exibe todos os produtos, suas quantidades em estoque e preços.
- `calcularValorTotalEstoque()`: Calcula e retorna o valor total do estoque, considerando a quantidade e o preço de cada produto.
- `obterProdutoMaisCaro()`: Retorna o produto mais caro do estoque, ou seja, aquele com o maior preço.
Expand All @@ -86,14 +85,11 @@ Crie uma classe chamada "ContagemPalavras" que utilize um Map para armazenar as

### 1. Agenda de Eventos

Crie uma classe chamada "AgendaEventos" que utilize um `Map` para armazenar os eventos e suas respectivas datas. Cada evento é representado por um objeto da classe "Evento", que possui atributos como nome e uma lista de atrações. Implemente os seguintes métodos:
Crie uma classe chamada "AgendaEventos" que utilize um `Map` para armazenar as datas e seus respectivos Eventos. Cada evento é representado por um objeto da classe "Evento", que possui atributos como nome do evento e o nome da atração. Implemente os seguintes métodos:

- `adicionarEvento(Evento evento)`: Adiciona um evento à agenda.
- `removerEvento(String nome)`: Remove um evento da agenda, dado o nome do evento.
- `adicionarEvento(LocalDate data, String nome, String atracao)`: Adiciona um evento à agenda.
- `exibirAgenda()`: Exibe a agenda de eventos em ordem crescente de data.
- `obterProximoEvento()`: Retorna o próximo evento que ocorrerá.
- `contarEventosNoMes(int mes, int ano)`: Retorna a quantidade de eventos que ocorreram em um determinado mês e ano.
- `contarAtracoes(String nomeAtracao)`: Retorna a quantidade de vezes que uma determinada atração se apresentou em todos os eventos da agenda.

### 2. Livraria Online
<p>
Expand Down

0 comments on commit 1c46e52

Please sign in to comment.