HackerRank #39 | HashSet | 🇧🇷
Tags: java, hashset, set, wecoded
Published: 2021-09-15 21:04:35

[Esse exercício](https://www.hackerrank.com/challenges/java-hashset/problem) pede para resolvermos usando o `HashSet`. O HashSet é na verdade um tipo de lista que não repete objetos e isso vai facilitar a resolução do nosso problema.

A partir de um input de um `integer t`, recebemos um número t de pares, podendo ser repetidos ou não. Vejamos o exemplo:

```
5
john tom
john mary
john tom
mary anna
mary anna
```

Temos 5 pares (delimitados por t) e alguns estão repetidos. Precisamos filtrar esses pares e contabilizar apenas os que não se repetem. No exemplo acima isso significa que precisamos ignorar um dos "john tom" e do "mary anna".
O output precisa mostrar a contabilidade de pares únicos e fica assim:

```
1
2
2
3
3
```

Para fazer isso, seguimos o passo a passo:

* Fazemos um `HashSet<String> hashset = new HashSet<>();`, de acordo com a sintaxe do HashSet
* Fazemos um `for` que itera a quantidade de pares únicos, ficando assim:

```
        HashSet<String> hashset = new HashSet<>();

        for (int i = 0; i < t; i++){
            hashset.add(pair_left[i] + " " + pair_right[i]);
            System.out.println(hashset.size());
        }
```

Dessa forma, cada par que se forma ocupará uma posição no HashSet e ele não aceitará pares repetidos!

======

#### Referências
[HashSet](https://docs.oracle.com/javase/8/docs/api/java/util/HashSet.html#:~:text=HashSet%20%28int%20initialCapacity%29%20Constructs%20a%20new%2C%20empty%20set%3B,specified%20initial%20capacity%20and%20the%20specified%20load%20factor.) : Oracle

============

Essa publicação faz parte de uma série de exercícios resolvidos em Java no HackerRank. Acesse a série completa:

- [HackerRank #6 | Scanner e End-of-file](https://dev.to/beatrizmaciel/hackerrank-6-scanner-e-endoffile-462c)
- [HackerRank #7 | Int to String / String to Int](https://dev.to/beatrizmaciel/hackerrank-7-int-em-string-e-vice-versa-4n1e)
- [HackerRank #8 | Date and Time](https://dev.to/beatrizmaciel/hackerrank-8-date-and-time-1f78)
- [HackerRank #9 | Static Initializer Block](https://dev.to/beatrizmaciel/hackerrank-9-static-initializer-block-48ha)
- [HackerRank #10 | Currency Formatter](https://dev.to/beatrizmaciel/hackerrank-10-currency-formatter-22oj)
- [HackerRank #11 | DataTypes](https://dev.to/beatrizmaciel/hackerrank-11-datatypes-2e9h)
- [HackerRank #12 | Strings Introduction](https://dev.to/beatrizmaciel/hackerrank-12-strings-introduction-2d1n)
- [HackerRank #13 | Substring Comparisons](https://dev.to/beatrizmaciel/hackerrank-13-substring-comparisons-57ha)
- [HackerRank #14 | Abstract Class](https://dev.to/beatrizmaciel/hackerrank-14-abstract-class-3h5d)
- [HackerRank #18 | BigInteger](https://dev.to/beatrizmaciel/hackerrank-18-biginteger-4jad)
- [HackerRank #19 | Loops II](https://dev.to/beatrizmaciel/hackerrank-19-loops-ii-385n)
- [HackerRank #20 | String Reverse](https://dev.to/beatrizmaciel/hackerrank-20-string-reverse-nec)
- [HackerRank #23 | Instanceof keyword](https://dev.to/beatrizmaciel/hackerrank-23-instanceof-keyword-3lh6)
- [HackerRank #26 | Generics](https://dev.to/beatrizmaciel/hackerrank-26-generics-55p8)
- [HackerRank #27 | 1D Array](https://dev.to/beatrizmaciel/hackerrank-27-1d-array-5f80)
- [HackerRank #28 | Anagrams](https://dev.to/beatrizmaciel/hackerrank-28-anagrams-boi)
- [HackerRank #33 | Arraylist](https://dev.to/beatrizmaciel/hackerrank-33-arraylist-2lj1)
- [HackerRank #34 | Exception Handling Try / Catch](https://dev.to/beatrizmaciel/hackerrank-34-exception-handling-try-catch-144f)
- [HackerRank #36 | Exception Handling](https://dev.to/beatrizmaciel/hackerrank-35-exception-handling-44e)
- [HackerRank #37 | List](https://dev.to/beatrizmaciel/hackerrank-37-list-4gmj)
- [HackerRank #38 | SubArray](https://dev.to/beatrizmaciel/hackerrank-38-subarray-1693)
- HackerRank #39 | HashSet
- [HackerRank #40 | Java Dequeue](https://dev.to/beatrizmaciel/hackerrank-40-java-dequeue--497h)