---
# System prepended metadata

title: "\n Java OO Aula 6\n"

---

<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&oacute;picos especias em Java:</p>
<p>. Constru&iacute;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&eacute;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&eacute;todos de <strong>FileWriter;</strong></p>
<p>. Utilizamos <strong>try/catch&nbsp;</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>

![](https://i.imgur.com/lkW1pZC.jpg)


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