X Tutup
Skip to content

Commit 117ebd4

Browse files
committed
feat(collection-improvements): Seção de Java 8 em Collections.
Criação da seção que apresenta exemplos de utilização dos novos métodos do Java 8 para coleções. Ref. Issue #42
1 parent 2b6d39d commit 117ebd4

File tree

6 files changed

+161
-1
lines changed

6 files changed

+161
-1
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
:java-package: src/org/j6toj8/collections
2+
:section-java-package: ../../../{java-package}
3+
4+
=== Melhorias de Java 8 em Coleções
5+
6+
.Objetivo
7+
--------------------------------------------------
8+
Develop code that uses Java SE 8 collection improvements, including the Collection.removeIf(), List.replaceAll(), Map.computeIfAbsent(), and Map.computeIfPresent() methods
9+
-
10+
Desenvolver código que use as melhorias em coleções do Java SE 8, incluindo os métodos Collection.removeIf(), List.replaceAll(), Map.computeIfAbsent(), and Map.computeIfPresent()
11+
--------------------------------------------------
12+
13+
O Java 8 trouxe vários métodos em Collections que utilizam como argumento uma função lambda, facilitando algumas operações. Serão apresentados exemplos dos 4 métodos relacionados a esse objetivo.
14+
15+
. É possível remover um item de uma coleção condicionalmente com uma função lambda.
16+
+
17+
[source,java,indent=0]
18+
.{java-package}/improvements/Collections_RemoveIf.java
19+
----
20+
include::{section-java-package}/improvements/Collections_RemoveIf.java[tag=code]
21+
----
22+
+
23+
.Saída no console
24+
[source,console]
25+
----
26+
Lista antes do removeIf: [1, 2, 3, 4, 5, 6, 7, 8, 9]
27+
Lista depois do removeIf: [1, 3, 5, 7, 9]
28+
----
29+
30+
. É possível modificar todos os elementos da coleção de acordo com uma operação lambda.
31+
+
32+
[source,java,indent=0]
33+
.{java-package}/improvements/Collections_ReplaceAll.java
34+
----
35+
include::{section-java-package}/improvements/Collections_ReplaceAll.java[tag=code]
36+
----
37+
+
38+
.Saída no console
39+
[source,console]
40+
----
41+
Lista antes do replaceAll: [1, 2, 3, 4, 5, 6, 7, 8, 9]
42+
Lista depois do replaceAll: [2, 4, 6, 8, 10, 12, 14, 16, 18]
43+
----
44+
45+
. É possível colocar valores em um `Map` a partir de uma função lambda, apenas se a chave *não* estiver presente no `Map`.
46+
+
47+
[source,java,indent=0]
48+
.{java-package}/improvements/Collections_ComputeIfAbsent.java
49+
----
50+
include::{section-java-package}/improvements/Collections_ComputeIfAbsent.java[tag=code]
51+
----
52+
+
53+
.Saída no console
54+
[source,console]
55+
----
56+
Map antes do computeIfAbsent: {A=65, B=66}
57+
Map depois do computeIfAbsent: {A=65, B=66, C=67}
58+
----
59+
60+
. É possível alterar valores em um `Map` a partir de uma função lambda, apenas se a chave estiver presente no `Map`.
61+
+
62+
[source,java,indent=0]
63+
.{java-package}/improvements/Collections_ComputeIfPresent.java
64+
----
65+
include::{section-java-package}/improvements/Collections_ComputeIfPresent.java[tag=code]
66+
----
67+
+
68+
.Saída no console
69+
[source,console]
70+
----
71+
Map antes do computeIfAbsent: {A=65, B=66}
72+
Map depois do computeIfAbsent: {A=4225, B=4356}
73+
----
74+
75+
****
76+
77+
* Using Streams
78+
+
79+
Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide (p. 185). Wiley. Edição do Kindle.
80+
81+
* https://www.baeldung.com/java-8-streams[The Java 8 Stream API Tutorial.]
82+
83+
****

ch08-java-collections.asc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
include::book/08-java-collections/sections/01-diamond.asc[]
55
include::book/08-java-collections/sections/02-collections-lambda.asc[]
66
include::book/08-java-collections/sections/03-data-search.asc[]
7-
include::book/08-java-collections/sections/04-calculations.asc[]
7+
include::book/08-java-collections/sections/04-calculations.asc[]
8+
include::book/08-java-collections/sections/05-collection-improvements.asc[]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.j6toj8.collections.improvements;
2+
3+
import java.util.HashMap;
4+
5+
public class Collections_ComputeIfAbsent {
6+
7+
public static void main(String[] args) {
8+
// tag::code[]
9+
HashMap<String, Integer> map = new HashMap<String, Integer>();
10+
map.put("A", "A".hashCode());
11+
map.put("B", "B".hashCode());
12+
13+
System.out.println("Map antes do computeIfAbsent: " + map);
14+
map.computeIfAbsent("A", k -> k.hashCode());
15+
map.computeIfAbsent("C", k -> k.hashCode());
16+
System.out.println("Map depois do computeIfAbsent: " + map);
17+
// end::code[]
18+
}
19+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.j6toj8.collections.improvements;
2+
3+
import java.util.HashMap;
4+
5+
public class Collections_ComputeIfPresent {
6+
7+
public static void main(String[] args) {
8+
// tag::code[]
9+
HashMap<String, Integer> map = new HashMap<String, Integer>();
10+
map.put("A", "A".hashCode());
11+
map.put("B", "B".hashCode());
12+
13+
System.out.println("Map antes do computeIfAbsent: " + map);
14+
// k = chave; v = valor
15+
map.computeIfPresent("A", (k, v) -> k.hashCode() * v);
16+
map.computeIfPresent("B", (k, v) -> k.hashCode() * v);
17+
map.computeIfPresent("C", (k, v) -> k.hashCode() * v);
18+
System.out.println("Map depois do computeIfAbsent: " + map);
19+
// end::code[]
20+
}
21+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.j6toj8.collections.improvements;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
7+
public class Collections_RemoveIf {
8+
9+
public static void main(String[] args) {
10+
// tag::code[]
11+
List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,8,9));
12+
13+
System.out.println("Lista antes do removeIf: " + list);
14+
list.removeIf(n -> n % 2 == 0); // remove números pares
15+
System.out.println("Lista depois do removeIf: " + list);
16+
// end::code[]
17+
}
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.j6toj8.collections.improvements;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
7+
public class Collections_ReplaceAll {
8+
9+
public static void main(String[] args) {
10+
// tag::code[]
11+
List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,8,9));
12+
13+
System.out.println("Lista antes do replaceAll: " + list);
14+
list.replaceAll(n -> n * 2); // multiplica todos os elementos por 2
15+
System.out.println("Lista depois do replaceAll: " + list);
16+
// end::code[]
17+
}
18+
}

0 commit comments

Comments
 (0)
X Tutup