Skip to content

Commit 63cbf24

Browse files
Java Examples
1 parent f774cfb commit 63cbf24

File tree

2 files changed

+31
-55
lines changed

2 files changed

+31
-55
lines changed

pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
<dependency>
6060
<groupId>org.projectlombok</groupId>
6161
<artifactId>lombok</artifactId>
62-
<version>1.18.26</version>
62+
<version>1.18.32</version>
6363
<scope>provided</scope>
6464
</dependency>
6565
<dependency>
@@ -205,14 +205,14 @@
205205
<artifactId>maven-compiler-plugin</artifactId>
206206
<version>3.11.0</version>
207207
<configuration>
208-
<source>21</source>
209-
<target>21</target>
208+
<source>22</source>
209+
<target>22</target>
210210
<enablePreview>true</enablePreview>
211211
<annotationProcessorPaths>
212212
<path>
213213
<groupId>org.projectlombok</groupId>
214214
<artifactId>lombok</artifactId>
215-
<version>1.18.30</version>
215+
<version>1.18.32</version>
216216
</path>
217217
<path>
218218
<groupId>io.soabase.record-builder</groupId>

src/main/java/com/howtodoinjava/core/streams/FilterAMap.java

Lines changed: 27 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,17 @@
22

33
import java.util.ArrayList;
44
import java.util.Comparator;
5-
import java.util.HashMap;
65
import java.util.LinkedHashMap;
76
import java.util.List;
87
import java.util.Map;
98
import java.util.Objects;
109
import java.util.function.Function;
1110
import java.util.function.Predicate;
1211
import java.util.stream.Collectors;
13-
import lombok.AllArgsConstructor;
14-
import lombok.Data;
1512

1613
public class FilterAMap {
1714

15+
@SuppressWarnings("unused")
1816
public static void main(String[] args) {
1917

2018
Map<Integer, User> usersMap = Map.of(
@@ -27,7 +25,7 @@ public static void main(String[] args) {
2725
7, new User(7, "Don"),
2826
8, new User(8, "Dave"));
2927

30-
//1
28+
// Collect Keys filtered by List of Keys
3129
List<Integer> idList = List.of(1, 3, 5, 7);
3230

3331
Map<Integer, User> filteredMap1 = usersMap.entrySet()
@@ -37,36 +35,38 @@ public static void main(String[] args) {
3735

3836
System.out.println(filteredMap1);
3937

38+
// Collect entries filtered by List of Keys
39+
4040
Map<Integer, User> filteredMap2 = usersMap.entrySet()
4141
.stream()
42-
.filter(entry -> idList.contains(entry.getValue().getId()))
42+
.filter(entry -> idList.contains(entry.getValue().id()))
4343
.collect(Collectors.toUnmodifiableMap(Map.Entry::getKey, Map.Entry::getValue));
4444

4545
System.out.println(filteredMap2);
4646

47-
//2
47+
// Collect Values filtered by List of Keys
4848

4949
List<User> usersList1 = usersMap.values()
5050
.stream()
51-
.filter(user -> idList.contains(user.getId()))
52-
.collect(Collectors.toUnmodifiableList());
51+
.filter(user -> idList.contains(user.id()))
52+
.toList();
5353

5454
System.out.println(usersList1);
5555

5656
//3
5757
List<User> usersList2 = new ArrayList<>();
5858

59-
usersMap.entrySet().forEach(entry -> {
60-
if (idList.contains(entry.getValue().getId())) {
61-
usersList2.add(entry.getValue());
59+
usersMap.forEach((_, value) -> {
60+
if (idList.contains(value.id())) {
61+
usersList2.add(value);
6262
}
6363
});
6464

6565
System.out.println(usersList2);
6666

6767
System.out.println("====================");
6868

69-
//4 Using filters
69+
// Using Generic filters
7070
Predicate<Integer> predicate = key -> key > 4;
7171
Comparator<Integer> comparator = Comparator.comparing(Function.identity());
7272

@@ -76,22 +76,23 @@ public static void main(String[] args) {
7676
Map<Integer, User> filteredAndSortedMap = Filters.sortedByKey(usersMap, predicate, comparator);
7777
System.out.println(filteredAndSortedMap);
7878

79-
Map<Integer, User> filteredAndSortedMapReversed = Filters.sortedByKeyReversed(usersMap, predicate, comparator);
80-
System.out.println(filteredAndSortedMapReversed);
81-
82-
Predicate<User> valuePredicate = user -> user.getName().startsWith("A");
83-
Comparator<User> valueComparator = Comparator.comparing(User::getName);
79+
Predicate<User> valuePredicate = user -> user.name().startsWith("D");
80+
Comparator<User> valueComparator = Comparator.comparing(User::name);
8481

8582
Map<Integer, User> filteredMapByValue = Filters.byValue(usersMap, valuePredicate);
8683
System.out.println(filteredMapByValue);
8784

88-
Map<Integer, User> filteredAndSortedMapByValue = Filters.sortedByValue(usersMap, valuePredicate, valueComparator);
85+
Map<Integer, User> filteredAndSortedMapByValue = Filters.sortedByValue(usersMap, valuePredicate,
86+
valueComparator);
8987
System.out.println(filteredAndSortedMapByValue);
9088

91-
Map<Integer, User> filteredAndSortedMapReversedByValue = Filters.sortedByValueReversed(usersMap, valuePredicate, valueComparator);
92-
System.out.println(filteredAndSortedMapReversedByValue);
89+
Map<Integer, User> filteredMapByKeyAndValue = Filters.byValue(
90+
Filters.byKey(usersMap, predicate), valuePredicate);
91+
System.out.println(filteredMapByKeyAndValue);
9392

94-
Map<Integer, User> filteredMapByKeyAndValue = Filters.byValue(Filters.byKey(usersMap, predicate), valuePredicate);
93+
Map<Integer, User> filteredMapByKeyAndValue_V2 = usersMap.entrySet().stream()
94+
.filter((entry) -> entry.getKey() > 4 && entry.getValue().name().startsWith("D"))
95+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
9596
System.out.println(filteredMapByKeyAndValue);
9697
}
9798

@@ -101,8 +102,7 @@ private Filters() {
101102
throw new AssertionError("Cannot be instantiated");
102103
}
103104

104-
public static <K, V> Map<K, V> byKey(
105-
Map<K, V> map, Predicate<K> predicate) {
105+
public static <K, V> Map<K, V> byKey(Map<K, V> map, Predicate<K> predicate) {
106106

107107
Objects.requireNonNull(map);
108108
Objects.requireNonNull(predicate);
@@ -127,18 +127,9 @@ public static <K, V> Map<K, V> sortedByKey(
127127
.sorted(Map.Entry.comparingByKey(c))
128128
.collect(Collectors.toMap(
129129
Map.Entry::getKey, Map.Entry::getValue,
130-
(c1, c2) -> c2, LinkedHashMap::new));
130+
(_, c2) -> c2, LinkedHashMap::new));
131131
}
132132

133-
public static <K, V> Map<K, V> sortedByKeyReversed(
134-
Map<K, V> map, Predicate<K> predicate, Comparator<K> c) {
135-
136-
Objects.requireNonNull(map);
137-
Objects.requireNonNull(predicate);
138-
Objects.requireNonNull(c);
139-
140-
return sortedByKey(map, predicate, c.reversed());
141-
}
142133

143134
public static <K, V> Map<K, V> byValue(
144135
Map<K, V> map, Predicate<V> predicate) {
@@ -166,25 +157,10 @@ public static <K, V> Map<K, V> sortedByValue(Map<K, V> map,
166157
.sorted(Map.Entry.comparingByValue(c))
167158
.collect(Collectors.toMap(
168159
Map.Entry::getKey, Map.Entry::getValue,
169-
(c1, c2) -> c2, LinkedHashMap::new));
170-
}
171-
172-
public static <K, V> Map<K, V> sortedByValueReversed(Map<K, V> map,
173-
Predicate<V> predicate, Comparator<V> c) {
174-
175-
Objects.requireNonNull(map);
176-
Objects.requireNonNull(predicate);
177-
Objects.requireNonNull(c);
178-
179-
return sortedByValue(map, predicate, c.reversed());
160+
(_, c2) -> c2, LinkedHashMap::new));
180161
}
181162
}
182163
}
183164

184-
@Data
185-
@AllArgsConstructor
186-
class User {
187-
188-
Integer id;
189-
String name;
190-
}
165+
record User(Integer id, String name) {
166+
}

0 commit comments

Comments
 (0)