fixes + final document
This commit is contained in:
81
AVL.java
81
AVL.java
@@ -1,3 +1,4 @@
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -19,6 +20,50 @@ public class AVL {
|
||||
this.root = null;
|
||||
}
|
||||
|
||||
public void cleanup() {
|
||||
cleanupRec(root);
|
||||
root = null;
|
||||
}
|
||||
|
||||
private void cleanupRec(Node node) {
|
||||
if (node != null) {
|
||||
cleanupRec(node.left);
|
||||
cleanupRec(node.right);
|
||||
remove(node.programa.getId());
|
||||
}
|
||||
}
|
||||
|
||||
public void saveTreeToCSV(PrintWriter writer) {
|
||||
saveTreeToCSVRec(root, writer);
|
||||
}
|
||||
|
||||
private void saveTreeToCSVRec(Node node, PrintWriter writer) {
|
||||
if (node != null) {
|
||||
saveTreeToCSVRec(node.left, writer);
|
||||
|
||||
ProgramaNetflix p = node.programa;
|
||||
String line = "\"" + p.getId() + "\"," +
|
||||
"\"" + p.getTitulo() + "\"," +
|
||||
"\"" + p.getShow_type() + "\"," +
|
||||
"\"" + p.getDescricao() + "\"," +
|
||||
p.getRelease_year() + "," +
|
||||
"\"" + p.getAge_certification() + "\"," +
|
||||
p.getRuntime() + "," +
|
||||
"\"" + p.getGeneros() + "\"," +
|
||||
"\"" + p.getProductionCountries() + "\"," +
|
||||
p.getTemporadas() + "," +
|
||||
"\"" + p.getImdb_id() + "\"," +
|
||||
p.getImdb_score() + "," +
|
||||
p.getImdb_votes() + "," +
|
||||
p.getTmdb_popularity() + "," +
|
||||
p.getTmdb_score();
|
||||
|
||||
writer.println(line);
|
||||
|
||||
saveTreeToCSVRec(node.right, writer);
|
||||
}
|
||||
}
|
||||
|
||||
// Métodos de inserção e busca
|
||||
public void insert(ProgramaNetflix programa) {
|
||||
root = insertRec(root, programa);
|
||||
@@ -68,9 +113,15 @@ public class AVL {
|
||||
return root;
|
||||
}
|
||||
|
||||
public ProgramaNetflix search(String id) {
|
||||
public String search(String id) {
|
||||
count = 1;
|
||||
return searchRec(root, id);
|
||||
ProgramaNetflix programa = searchRec(root, id);
|
||||
|
||||
if (programa != null) {
|
||||
return programa.getTitulo();
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
private ProgramaNetflix searchRec(Node root, String id) {
|
||||
@@ -146,8 +197,12 @@ public class AVL {
|
||||
return y;
|
||||
}
|
||||
|
||||
public void remove(String id) {
|
||||
public boolean remove(String id) {
|
||||
if (search(id).isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
root = removeRec(root, id);
|
||||
return true;
|
||||
}
|
||||
|
||||
private Node removeRec(Node root, String id) {
|
||||
@@ -310,16 +365,24 @@ public class AVL {
|
||||
|
||||
private void inorderMediaDuracaoPorClassificacao(Node no, Map<String, Double> somaDuracaoPorClassificacao,
|
||||
Map<String, Integer> contagemPorClassificacao) {
|
||||
|
||||
if (no != null) {
|
||||
|
||||
inorderMediaDuracaoPorClassificacao(no.left, somaDuracaoPorClassificacao, contagemPorClassificacao);
|
||||
|
||||
String classificacao = no.programa.getAge_certification();
|
||||
int duracao = no.programa.getRuntime();
|
||||
if (no.programa.getShow_type().equals("SHOW")) {
|
||||
|
||||
// Atualiza a soma da duração e a contagem para a classificação indicativa
|
||||
somaDuracaoPorClassificacao.put(classificacao,
|
||||
somaDuracaoPorClassificacao.getOrDefault(classificacao, 0.0) + duracao);
|
||||
contagemPorClassificacao.put(classificacao, contagemPorClassificacao.getOrDefault(classificacao, 0) + 1);
|
||||
String classificacao = no.programa.getAge_certification();
|
||||
|
||||
int duracao = no.programa.getRuntime();
|
||||
|
||||
// Atualiza a soma da duração e a contagem para a classificação indicativa
|
||||
somaDuracaoPorClassificacao.put(classificacao,
|
||||
somaDuracaoPorClassificacao.getOrDefault(classificacao, 0.0) + duracao);
|
||||
|
||||
contagemPorClassificacao.put(classificacao,
|
||||
contagemPorClassificacao.getOrDefault(classificacao, 0) + 1);
|
||||
}
|
||||
|
||||
inorderMediaDuracaoPorClassificacao(no.right, somaDuracaoPorClassificacao, contagemPorClassificacao);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user