Skip to content

Commit

Permalink
LAB12 -- HashSet, StringBuilder
Browse files Browse the repository at this point in the history
  • Loading branch information
vigusmao committed Jun 10, 2019
1 parent c22693b commit 247734c
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 7 deletions.
13 changes: 6 additions & 7 deletions SomaDoPar/LAB12.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
Esse método deverá retornar uma String com (apenas) um par de elementos da lista
cuja soma seja s, se existir; caso contrário, deverá retornar "Não existe".
Exemplo: minhaLista --> 2, -10, 5, 32, 35, 51
SomaDoPar.encontrarPar(minhaLista, 25) deve printar "-10, 35"
SomaDoPar.encontrarPar(minhaLista, 102) deve printar "51, 51"
SomaDoPar.encontrarPar(minhaLista, 6) deve printar "Não existe"
SomaDoPar.encontrarPar(minhaLista, 25) deve retornar "-10, 35"
SomaDoPar.encontrarPar(minhaLista, 102) deve retornar "51, 51"
SomaDoPar.encontrarPar(minhaLista, 6) deve retornar "Não existe"

2) Crie um unit test para o seu método. Por exemplo, testando os dois casos acima!
2) Crie um unit test para o seu método (por exemplo, testando os dois casos acima!)

3) Crie um main() onde você declarará algumas constantes:
TAMANHO_LISTA --> o tamanho que sua lista terá
Expand All @@ -21,7 +21,6 @@

5) Crie um método público static imprimirLista(Lista<Integer>, String separador)
para imprimir na tela a sua lista, com os elementos separados
pelo separador fornecido.
pelo separador fornecido, e imprima a lista criada no seu main() usando o seu
método imprimirLista.
Exemplo: imprimirLista(minhaLista, "|") deverá imprimir 2|-10|5|32|35|51

6) Imprima a lista criada no seu main().
66 changes: 66 additions & 0 deletions SomaDoPar/src/SomaDoPar.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,70 @@
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class SomaDoPar {

public static String encontrarParQuadratico(List<Integer> lista, int s) {
for (int i = 0; i < lista.size(); i++) {
for (int j = i; j < lista.size(); j++) {
if (lista.get(i) + lista.get(j) == s) {
return String.format("%d, %d", lista.get(i), lista.get(j));
}
}
}
return "Não existe";
}

public static String encontrarPar(List<Integer> lista, int s) {
Set<Integer> conjunto = new HashSet<>();
for (int x : lista) {
conjunto.add(x);
int complemento = s - x;
if (conjunto.contains(complemento)) {
return String.format("%d, %d", x, complemento);
}
}
return "Não existe";
}

public static String formatarLista(
List<Integer> lista, String separador) {

// JEITO TERRÍVEL DE SE FAZER!!!!
// String resultado = "";
// for (int i = 0; i < lista.size() - 1; i++) {
// resultado += lista.get(i);
// resultado += separador;
// }
// resultado += lista.get(lista.size() - 1);
// return resultado;

// JEITO CORRETO, usando um StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < lista.size() - 1; i++) {
sb.append(lista.get(i))
.append(separador);
}
sb.append(lista.get(lista.size() - 1));
return sb.toString();
}

public static void imprimirLista(
List<Integer> lista, String separador) {
System.out.println(formatarLista(lista, separador));
}

public static void main(String[] args) {
final int TAMANHO = 100_000;
List<Integer> lista = new ArrayList<>(TAMANHO);
for (int i = 1; i <= TAMANHO; i++) {
lista.add(i);
}
long inicio = System.currentTimeMillis();
formatarLista(lista, "|");
long duracao = System.currentTimeMillis() - inicio;
System.out.printf("\nTamanho = %d --- Duração = %d millis\n",
TAMANHO, duracao);
}
}
21 changes: 21 additions & 0 deletions SomaDoPar/src/SomaDoParTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.*;

public class SomaDoParTest {

@org.junit.Test
public void encontrarPar() {
List<Integer> lista = new ArrayList<>();
for (int x : new int[] {2, -10, 5, 32, 35, 51}) {
lista.add(x);
}

String resultado = SomaDoPar.encontrarPar(lista, 25);
assertTrue(resultado.equals("-10, 35") || resultado.equals("35, -10"));

assertEquals("51, 51", SomaDoPar.encontrarPar(lista, 102));
assertEquals("Não existe", SomaDoPar.encontrarPar(lista, 6));
}
}

0 comments on commit 247734c

Please sign in to comment.