HackerRank #37 | List | 🇧🇷
Tags: java, list, wecoded
Published: 2021-09-13 13:31:16

[Este exercício](https://www.hackerrank.com/challenges/java-list/problem) pede para fazermos e manipularmos uma `List`.

O primeiro input (n) denota a quantidade de elementos dentro de um array. Depois, incluímos um a um desses elementos.

A terceira linha recebe um número (q) que guiará a quantidade de `Inserts` ou `Deletes` que faremos dentro da `List`.

Depois, faremos as modificações para substituir ou remover elementos do array. x denota a posição do elemento que será deletado e y denota o número de substituição que entrará em seu lugar.

De forma ilustrada:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mrxr9s0n8uo8sh4o6ff7.png)

O passo a passo é o seguinte:

* Escanear o primeiro input
* Fazer uma nova lista, sempre respeitando a boa prática de fazer mais abstrata possível. Nesse caso ficou: `List<Integer> lista = new ArrayList<>();`
* Fazer um `for` que adiciona, a partir de um scanner, os elementos na lista.
* Declarar `q`, `x`, `y` e `z` fora do `for`, sendo que `q` também precisa ser escaneado.
* Fazer um segundo `for` que recebe uma `String` que pode ser `Insert` ou `Delete`
* Para a string Insert, recebemos dois ints: `x` e `y`. Utilizamos o método .add(), que já faz a substituição.
* Caso contrário (ou seja, com Delete), recebemos apenas `z`. Utilizamos o método .remove(), que remove o elemento a partir do número da posição dele.

O código final fica assim, dentro da main:

```
        Scanner scanner = new Scanner(System.in));
        int n = scanner.nextInt();
        List<Integer> lista = new ArrayList<>();

        for (int i = 0; i < n; i++){
            lista.add(scanner.nextInt());
        }

        int q = scanner.nextInt();
        int x = 0;
        int y = 0;
        int z = 0;

        for (int j = 0; j < q; j++){
            String string = scanner.next();

            if (string.equals("Insert")){
                x = scanner.nextInt();
                y = scanner.nextInt();

                lista.add(x, y);
            } else {
                z = scanner.nextInt();

                lista.remove(z);
            }
        }

        scanner.close();

        for (int h = 0; h < lista.size(); h++){
            System.out.print(lista.get(h) + " ");
        }

```

=========

#### Referências

[List](https://docs.oracle.com/javase/7/docs/api/java/util/List.html) : Oracle
[Java Colletions: Set, list e iterator](https://www.devmedia.com.br/java-collections-set-list-e-iterator/29637) : DevMedia

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

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
- [HackerRank #38 | SubArray](https://dev.to/beatrizmaciel/hackerrank-38-subarray-1693)
- [HackerRank #40 | Java Dequeue](https://dev.to/beatrizmaciel/hackerrank-40-java-dequeue--497h)
- [HackerRank #39 | HashSet](https://dev.to/beatrizmaciel/hackerrank-39-hashset-3jb3)