<p><img src="https://i.imgur.com/D01Fpky.png" alt="" title="Entre no nosso site e veja nossos cursos"></p>
<h1>
<img class="emoji" alt=":coffee:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/coffee.png"> Java OO Aula 6
</h1>
O objetivo deste curso é abordar os principais conceitos, empregar as principais estruturas de dados, e trabalhar utilizando as principais boas práticas de Programação Orientada a Objetos [POO] em **Java**.
<h2 id="-Tema-da-aula" data-id="-Tema-da-aula"><a class="anchor hidden-xs" href="#-Tema-da-aula" title="-Tema-da-aula"><span class="octicon octicon-link"></span></a><img class="emoji" alt=":book:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/book.png">
<span> Tema da aula:</span></h2><span><p>Nessa sexta aula, abordamos alguns tópicos especias em Java:</p>
<p>. Construímos um <strong>HashMap</strong> e mostramos como inserir e listar dados;</p>
<p>. Mostramos como podemos gerar identificadores para objetos usando <strong>Math.random()</strong> e <strong>UUID</strong>;</p>
<p>. Criamos uma lista de Produtos, <strong>ordenamos</strong> essa lista de acordo com qualquer critério que seja do nosso interesse, usando <strong>stream</strong> e <strong>Comparator,</strong> e <strong>salvamos essa lista em um arquivo texto u</strong>sando os métodos de <strong>FileWriter;</strong></p>
<p>. Utilizamos <strong>try/catch </strong>no controle do acesso ao arquivo texto que vamos utilizar para salvar a lista de produtos.</p>
<br>
</span>
<h4>
Estrutura do projeto depois de finalizado
</h4>

<h3>
MapaTeste.java
</h3>
```java=
package entity;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class MapaTeste {
public static Integer gerarChave() {
int chave = (int) (Math.random() * 10000);
Integer iChave = Integer.valueOf(chave);
return iChave;
}
public static void main(String[] args) {
Map<Integer, String> mapa = new HashMap<Integer, String>();
mapa.put(MapaTeste.gerarChave(), "Produto01");
mapa.put(MapaTeste.gerarChave(), "Produto02");
mapa.put(MapaTeste.gerarChave(), "Produto03");
mapa.put(MapaTeste.gerarChave(), "Produto04");
mapa.put(1, "Produto10");
mapa.put(2, "Produto20");
mapa.put(3, "Produto30");
mapa.put(4, "Produto40");
System.out.println(mapa.get(4));
System.out.println(mapa.get(2));
System.out.println("===");
mapa.entrySet().stream().forEach(System.out::println);
System.out.println("* * *");
Map<UUID, String> mapaUUID = new HashMap<UUID, String>();
mapaUUID.put(UUID.randomUUID(), "UUID1");
mapaUUID.put(UUID.randomUUID(), "UUID2");
mapaUUID.put(UUID.randomUUID(), "UUID3");
mapaUUID.entrySet().stream().forEach(System.out::println);
}
}
```
<h5>
Rodando o método main, temos:
</h5>
```=
Produto40
Produto20
===
2496=Produto04
1=Produto10
2=Produto20
3=Produto30
4=Produto40
7205=Produto01
4137=Produto02
7453=Produto03
* * *
9a05ca7a-6327-4eec-876d-6dc246df4530=UUID2
b2aa42c6-e7a0-4648-ad35-9e0ee1f58ee7=UUID3
a3b37c6a-5422-4816-9cf3-3e926de51cc7=UUID1
```
<h3>
Produto.java
</h3>
```java=
package entity;
public class Produto {
private Integer id;
private String nome;
private Double preco;
public Produto() {
}
public Produto(Integer id, String nome, Double preco) {
this.id = id;
this.nome = nome;
this.preco = preco;
}
@Override
public String toString() {
return "Produto [id=" + id + ", "
+ "nome=" + nome + ", preco=" + preco + "]";
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Double getPreco() {
return preco;
}
public void setPreco(Double preco) {
this.preco = preco;
}
public static Integer gerarChave() {
int chave = (int) (Math.random() * 10000);
Integer iChave = Integer.valueOf(chave);
return iChave;
}
}
```
<h3>
GravarProduto.java
</h3>
```java=
package control;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import entity.Produto;
public class GravarProduto {
{
lst = new ArrayList<>();
}
List<Produto> lst;
FileWriter fw;
public List<Produto> getLst() {
return lst;
}
public void setLst(List<Produto> lst) {
this.lst = lst;
}
public void open() throws Exception {
fw = new FileWriter("C:\\JavaOO"
+ "\\eclipse-workspace\\produtos.log", true);
}
public void write(List<Produto> l) throws Exception {
for (Produto p : l) {
fw.write(p + "\n");
}
fw.write("\n===============================\n");
fw.flush();
}
public void close() throws Exception {
fw.close();
}
public void inserirLista(Produto... p) {
for (Produto x : p) {
this.lst.add(x);
}
}
public void ordenarLista() {
// this.lst = this.lst.stream().sorted(Comparator
//.comparingDouble(Produto::getPreco).reversed())
// .collect(Collectors.toList());
this.lst = this.lst.stream().sorted(Comparator
.comparing(Produto::getNome))
.collect(Collectors.toList());
}
public static void main(String[] args) {
Produto p1 = new Produto(100, "hiphone", 300.);
Produto p2 = new Produto(Produto.gerarChave(),
"razus", 299.);
Produto p3 = new Produto(Produto.gerarChave(),
"xan'xun", 399.);
Produto p4 = new Produto(10, "sonhy", 900.);
GravarProduto gp = new GravarProduto();
gp.inserirLista(p1, p2, p3, p4);
gp.ordenarLista();
try {
gp.open();
gp.write(gp.getLst());
gp.close();
System.out.println("Dados Gravados...");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
```
<h5>
Rodando o método main, temos:
</h5>
<h3>
produtos.log
</h3>
```=
Produto [id=100, nome=hiphone, preco=300.0]
Produto [id=694, nome=razus, preco=299.0]
Produto [id=10, nome=sonhy, preco=900.0]
Produto [id=5385, nome=xan'xun, preco=399.0]
===============================
Produto [id=100, nome=hiphone, preco=300.0]
Produto [id=3275, nome=razus, preco=299.0]
Produto [id=10, nome=sonhy, preco=900.0]
Produto [id=1937, nome=xan'xun, preco=399.0]
===============================
```
<span></span></p><blockquote style="border-left-color: red;">
<p><span class="color" data-color="red"></span><span> </span><small><i class="fa fa-user"></i> Prof Fernando Gomes - fernandojnr@gmail.com</small></p>