Loading repository data…
Loading repository data…
digitalinnovationone / repository
Este repositório contém o código-fonte do curso "Ganhando Produtividade com Stream API Java". O curso foi projetado para ajudar desenvolvedores Java a aproveitar ao máximo a poderosa Stream API introduzida no Java 8.
public class CarrinhoDeCompras {
//atributos
private List<Item> itemList;
//construtor
public CarrinhoDeCompras() {
this.itemList = new ArrayList<>();
}
//método para calcular valor total dos itens sem utilizar o Stream API
public double calcularValorTotal() {
double valorTotal = 0d;
if (!itemList.isEmpty()) {
for (Item item : itemList) {
double valorItem = item.getPreco() * item.getQuant();
valorTotal += valorItem;
}
return valorTotal;
} else {
throw new RuntimeException("A lista está vazia!");
}
}
}
public class CarrinhoDeCompras {
//atributos
private List<Item> itemList;
//construtor
public CarrinhoDeCompras() {
this.itemList = new ArrayList<>();
}
//método para calcular valor total dos itens utilizando o Stream API
public double calcularValorTotal() {
if (itemList.isEmpty()) {
throw new RuntimeException("A lista está vazia!");
}
return itemList.stream()
.mapToDouble(item -> item.getPreco() * item.getQuant())
.sum();
}
}
filter(Predicate<T> predicate): Filtra os elementos da Stream com base em um predicado. Retorna uma nova Stream contendo apenas os elementos que atendem ao critério do predicado.
Exemplo: stream.filter(n -> n > 5)map(Function<T, R> mapper): Transforma cada elemento da Stream usando a função especificada e retorna uma nova Stream contendo os elementos resultantes.
Exemplo: stream.map(s -> s.toUpperCase())sorted(): Classifica os elementos da Stream em ordem natural (se os elementos forem comparáveis) ou de acordo com um comparador fornecido.
Exemplo: stream.sorted()distinct(): Remove elementos duplicados da Stream, considerando a implementação do método equals() para comparação.
Exemplo: stream.distinct()limit(long maxSize): Limita o número de elementos da Stream aos maxSize primeiros elementos
Exemplo: stream.limit(10)skip(long n): Pula os primeiros n elementos da Stream e retorna uma nova Stream sem eles.
Exemplo: stream.skip(5)forEach(Consumer<T> action): Executa uma ação para cada elemento da Stream.
Exemplo: stream.forEach(System.out::println)toArray(): Converte a Stream em um array contendo os elementos da Stream.
Exemplo: stream.toArray()collect(Collector<T, A, R> collector): Coleta os elementos da Stream em uma estrutura de dados específica, como uma lista ou um mapa.
Exemplo: stream.collect(Collectors.toList())count(): Retorna o número de elementos na Stream.
Exemplo: stream.count()anyMatch(Predicate<T> predicate): Verifica se algum elemento da Stream atende ao predicado especificado.
Exemplo: stream.anyMatch(s -> s.startsWith("A"))allMatch(Predicate<T> predicate): Verifica se todos os elementos da Stream atendem ao predicado especificado.
Exemplo: stream.allMatch(n -> n > 0)noneMatch(Predicate<T> predicate): Verifica se nenhum elemento da Stream atende ao predicado especificado.
Exemplo: stream.noneMatch(s -> s.isEmpty())min(Comparator<T> comparator) e max(Comparator<T> comparator): Encontra o elemento mínimo e máximo da Stream, respectivamente, de acordo com o comparador fornecido.
Exemplo: stream.min(Comparator.naturalOrder()) ou stream.max(Comparator.naturalOrder())reduce(T identity, BinaryOperator<T> accumulator): Combina os elementos da Stream usando o acumulador especificado e retorna o resultado final.
Exemplo: stream.reduce(0, (a, b) -> a + b)public class OrdenacaoPessoa {
//atributo
private List<Pessoa> pessoaList;
//construtor
public OrdenacaoPessoa() {
this.pessoaList = new ArrayList<>();
}
public List<Pessoa> ordenarPorAltura() {
if (!pessoaList.isEmpty()) {
List<Pessoa> pessoasPorAltura = new ArrayList<>(pessoaList);
pessoasPorAltura.sort((p1, p2) -> Double.compare(p1.getAltura(), p2.getAltura()));
return pessoasPorAltura;
} else {
throw new RuntimeException("A lista está vazia!");
}
}
}
public class OrdenacaoPessoa {
//atributo
private List<Pessoa> pessoaList;
//construtor
public OrdenacaoPessoa() {
this.pessoaList = new ArrayList<>();
}
public List<Pessoa> ordenarPorAltura() {
if (!pessoaList.isEmpty()) {
List<Pessoa> pessoasPorAltura = new ArrayList<>(pessoaList);
pessoasPorAltura.sort(Comparator.comparingDouble(Pessoa::getAltura));
return pessoasPorAltura;
} else {
throw new RuntimeException("A lista está vazia!");
}
}
}
[1] "Java Stream API - Oracle." Oracle Brasil. Disponível em: https://www.oracle.com/br/technical-resources/articles/java-stream-api.html.
[2] "Java Collections API Examples - cami-la." GitHub. Disponível em: https://github.com/cami-la/collections-java-api-2023.
[3] "Como usar funções functional_interface em Java - DevMedia." DevMedia. Disponível em: https://www.devmedia.com.br/como-usar-funcoes-lambda-em-java/32826.