Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda enum | enum e Stream API
Estruturas de Dados em Java

bookenum

Vamos passar para outra estrutura de dados bastante interessante e, mais importante, distinta - enum.

Nota

Caso você tenha esquecido, uma constante é um valor imutável. Ela permanece constante.

Vamos dar uma olhada em como criar um enum. Criar um enum diferencia-se significativamente de outras estruturas de dados, pois é feito no nível da classe:

DaysOfTheWeek.java

DaysOfTheWeek.java

copy
123456789
public enum DaysOfTheWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

O Enum é necessário para que possamos nos referir facilmente à constante. Como é uma lista de constantes, acessamos da seguinte maneira:

main.java

main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Days today = Days.MONDAY; System.out.println(today); } } enum Days { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

Aqui, simplesmente acessamos a constante enum para entender que dia é hoje. Em vez de criar muitas constantes diferentes, armazenamos apenas um array de constantes na enum. Isso é conveniente e muito prático. Por exemplo, em um dos desafios anteriores, poderíamos ter armazenado nomes de departamentos em um enum e usado a constante como uma chave.

Vamos ver um exemplo:

main.java

main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingEmployees = new ArrayList<>(); marketingEmployees.add("Michael"); marketingEmployees.add("Alice"); marketingEmployees.add("Jimmy"); List<String> developerEmployees = new ArrayList<>(); developerEmployees.add("Bob"); developerEmployees.add("John"); developerEmployees.add("Ryan"); List<String> analyticsEmployees = new ArrayList<>(); analyticsEmployees.add("Alexander"); analyticsEmployees.add("Ben"); Map<Departments, List<String>> company = new HashMap<>(); company.put(Departments.MARKETING, marketingEmployees); company.put(Departments.DEVELOPMENT, developerEmployees); company.put(Departments.ANALYTICS, analyticsEmployees); System.out.println("Company: " + company); } } enum Departments { MARKETING, DEVELOPMENT, ANALYTICS }

Aliás, podemos também recuperar todos os valores constantes de um enum como um array utilizando o método values().

Vamos dar uma olhada em um exemplo:

main.java

main.java

copy
12345678910111213
package com.example; public class Main { public static void main(String[] args) { Days[] array = Days.values(); Days monday = array[1]; System.out.println(monday); } } enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Também podemos declarar campos e métodos em enums.

Vejamos um exemplo de um semáforo:

main.java

main.java

copy
12345678910111213
enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Em enums, os métodos funcionam de maneira um pouco diferente. Como são constantes, não podem ser modificados. Portanto, adicionamos campos no construtor desse enum, depois definimos o método getAction() que imediatamente produz a ação a ser tomada para um semaforo específico. Como você pode ver, nós especificamos essa ação diretamente no enum ao enumerar as constantes.

Vamos olhar um exemplo de como chamar tal método:

main.java

main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { TrafficLight currentLight = TrafficLight.RED; String currentAction = currentLight.getAction(); System.out.println("Action: " + currentAction); } } enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Como você pode ver, com a ajuda do método getAction(), obtemos imediatamente a ação a ser tomada para um semáforo específico. Você pode alterar o RED para qualquer outra cor e ver o que acontece.

Métodos e campos em enums não são usados com frequência, mas essa funcionalidade está presente, então é bom estar ciente dela. Você pode ler mais sobre enums na documentação oficial do Java.

Vamos resumir um pouco:

Vantagens do Enum em Java:

  1. Melhoria na legibilidade: Substituir constantes numéricas e literais de string por valores nomeados torna o código mais legível.
  2. Segurança de tipo: O compilador garante a segurança de tipo quando se trabalha com enums, prevenindo erros relacionados a tipos.
  3. Conjunto limitado de valores: Enums fornecem um conjunto fixo de valores, tornando o código mais previsível.
  4. Capacidade de adicionar métodos e campos: Enums podem conter métodos e campos, tornando-os mais poderosos em comparação com enumerações simples.

1. O que é um enum em Java?

2. Como você declara um enum chamado Months representando os meses do ano?

3. Como você pode obter um array de todos os valores em um enum chamado Colors?

4. Qual das seguintes afirmações sobre o seguinte enum é verdadeira?

5. Como você compararia corretamente currentStatus com Status.ACTIVE? Considere o seguinte enum:

question mark

O que é um enum em Java?

Select the correct answer

question mark

Como você declara um enum chamado Months representando os meses do ano?

Select the correct answer

question mark

Como você pode obter um array de todos os valores em um enum chamado Colors?

Select the correct answer

question mark

Qual das seguintes afirmações sobre o seguinte enum é verdadeira?

Select the correct answer

question mark

Como você compararia corretamente currentStatus com Status.ACTIVE? Considere o seguinte enum:

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 4

bookenum

Deslize para mostrar o menu

Vamos passar para outra estrutura de dados bastante interessante e, mais importante, distinta - enum.

Nota

Caso você tenha esquecido, uma constante é um valor imutável. Ela permanece constante.

Vamos dar uma olhada em como criar um enum. Criar um enum diferencia-se significativamente de outras estruturas de dados, pois é feito no nível da classe:

DaysOfTheWeek.java

DaysOfTheWeek.java

copy
123456789
public enum DaysOfTheWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

O Enum é necessário para que possamos nos referir facilmente à constante. Como é uma lista de constantes, acessamos da seguinte maneira:

main.java

main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Days today = Days.MONDAY; System.out.println(today); } } enum Days { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

Aqui, simplesmente acessamos a constante enum para entender que dia é hoje. Em vez de criar muitas constantes diferentes, armazenamos apenas um array de constantes na enum. Isso é conveniente e muito prático. Por exemplo, em um dos desafios anteriores, poderíamos ter armazenado nomes de departamentos em um enum e usado a constante como uma chave.

Vamos ver um exemplo:

main.java

main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingEmployees = new ArrayList<>(); marketingEmployees.add("Michael"); marketingEmployees.add("Alice"); marketingEmployees.add("Jimmy"); List<String> developerEmployees = new ArrayList<>(); developerEmployees.add("Bob"); developerEmployees.add("John"); developerEmployees.add("Ryan"); List<String> analyticsEmployees = new ArrayList<>(); analyticsEmployees.add("Alexander"); analyticsEmployees.add("Ben"); Map<Departments, List<String>> company = new HashMap<>(); company.put(Departments.MARKETING, marketingEmployees); company.put(Departments.DEVELOPMENT, developerEmployees); company.put(Departments.ANALYTICS, analyticsEmployees); System.out.println("Company: " + company); } } enum Departments { MARKETING, DEVELOPMENT, ANALYTICS }

Aliás, podemos também recuperar todos os valores constantes de um enum como um array utilizando o método values().

Vamos dar uma olhada em um exemplo:

main.java

main.java

copy
12345678910111213
package com.example; public class Main { public static void main(String[] args) { Days[] array = Days.values(); Days monday = array[1]; System.out.println(monday); } } enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Também podemos declarar campos e métodos em enums.

Vejamos um exemplo de um semáforo:

main.java

main.java

copy
12345678910111213
enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Em enums, os métodos funcionam de maneira um pouco diferente. Como são constantes, não podem ser modificados. Portanto, adicionamos campos no construtor desse enum, depois definimos o método getAction() que imediatamente produz a ação a ser tomada para um semaforo específico. Como você pode ver, nós especificamos essa ação diretamente no enum ao enumerar as constantes.

Vamos olhar um exemplo de como chamar tal método:

main.java

main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { TrafficLight currentLight = TrafficLight.RED; String currentAction = currentLight.getAction(); System.out.println("Action: " + currentAction); } } enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Como você pode ver, com a ajuda do método getAction(), obtemos imediatamente a ação a ser tomada para um semáforo específico. Você pode alterar o RED para qualquer outra cor e ver o que acontece.

Métodos e campos em enums não são usados com frequência, mas essa funcionalidade está presente, então é bom estar ciente dela. Você pode ler mais sobre enums na documentação oficial do Java.

Vamos resumir um pouco:

Vantagens do Enum em Java:

  1. Melhoria na legibilidade: Substituir constantes numéricas e literais de string por valores nomeados torna o código mais legível.
  2. Segurança de tipo: O compilador garante a segurança de tipo quando se trabalha com enums, prevenindo erros relacionados a tipos.
  3. Conjunto limitado de valores: Enums fornecem um conjunto fixo de valores, tornando o código mais previsível.
  4. Capacidade de adicionar métodos e campos: Enums podem conter métodos e campos, tornando-os mais poderosos em comparação com enumerações simples.

1. O que é um enum em Java?

2. Como você declara um enum chamado Months representando os meses do ano?

3. Como você pode obter um array de todos os valores em um enum chamado Colors?

4. Qual das seguintes afirmações sobre o seguinte enum é verdadeira?

5. Como você compararia corretamente currentStatus com Status.ACTIVE? Considere o seguinte enum:

question mark

O que é um enum em Java?

Select the correct answer

question mark

Como você declara um enum chamado Months representando os meses do ano?

Select the correct answer

question mark

Como você pode obter um array de todos os valores em um enum chamado Colors?

Select the correct answer

question mark

Qual das seguintes afirmações sobre o seguinte enum é verdadeira?

Select the correct answer

question mark

Como você compararia corretamente currentStatus com Status.ACTIVE? Considere o seguinte enum:

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 1
some-alt