Skip to content

Commit 8a4c326

Browse files
authored
Merge pull request eugenp#6153 from cror/stream-count
BAEL-2546: Stream.count
2 parents af9a60b + 735b0a1 commit 8a4c326

File tree

3 files changed

+76
-3
lines changed

3 files changed

+76
-3
lines changed

java-streams/src/main/java/com/baeldung/stream/filter/Customer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public boolean hasOver(int points) {
3232
return this.points > points;
3333
}
3434

35-
public boolean hasOverThousandPoints() {
35+
public boolean hasOverHundredPoints() {
3636
return this.points > 100;
3737
}
3838

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.baeldung.stream.filter;
2+
3+
import org.junit.Test;
4+
import org.junit.Before;
5+
6+
import java.util.Arrays;
7+
import java.util.List;
8+
9+
import static org.assertj.core.api.Assertions.assertThat;
10+
11+
public class StreamCountUnitTest {
12+
13+
private List<Customer> customers;
14+
15+
@Before
16+
public void setUp() {
17+
Customer john = new Customer("John P.", 15, "https://images.unsplash.com/photo-1543320485-d0d5a49c2b2e");
18+
Customer sarah = new Customer("Sarah M.", 200);
19+
Customer charles = new Customer("Charles B.", 150);
20+
Customer mary = new Customer("Mary T.", 1, "https://images.unsplash.com/photo-1543297057-25167dfc180e");
21+
customers = Arrays.asList(john, sarah, charles, mary);
22+
}
23+
24+
@Test
25+
public void givenListOfCustomers_whenCount_thenGetListSize() {
26+
long count = customers
27+
.stream()
28+
.count();
29+
30+
assertThat(count).isEqualTo(4L);
31+
}
32+
33+
@Test
34+
public void givenListOfCustomers_whenFilterByPointsOver100AndCount_thenGetTwo() {
35+
long countBigCustomers = customers
36+
.stream()
37+
.filter(c -> c.getPoints() > 100)
38+
.count();
39+
40+
assertThat(countBigCustomers).isEqualTo(2L);
41+
}
42+
43+
@Test
44+
public void givenListOfCustomers_whenFilterByPointsAndNameAndCount_thenGetOne() {
45+
long count = customers
46+
.stream()
47+
.filter(c -> c.getPoints() > 10 && c.getName().startsWith("Charles"))
48+
.count();
49+
50+
assertThat(count).isEqualTo(1L);
51+
}
52+
53+
@Test
54+
public void givenListOfCustomers_whenNoneMatchesFilterAndCount_thenGetZero() {
55+
long count = customers
56+
.stream()
57+
.filter(c -> c.getPoints() > 500)
58+
.count();
59+
60+
assertThat(count).isEqualTo(0L);
61+
}
62+
63+
@Test
64+
public void givenListOfCustomers_whenUsingMethodOverHundredPointsAndCount_thenGetTwo() {
65+
long count = customers
66+
.stream()
67+
.filter(Customer::hasOverHundredPoints)
68+
.count();
69+
70+
assertThat(count).isEqualTo(2L);
71+
}
72+
}

java-streams/src/test/java/com/baeldung/stream/filter/StreamFilterUnitTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public void givenListOfCustomers_whenFilterByMethodReference_thenGetTwo() {
6262

6363
List<Customer> customersWithMoreThan100Points = customers
6464
.stream()
65-
.filter(Customer::hasOverThousandPoints)
65+
.filter(Customer::hasOverHundredPoints)
6666
.collect(Collectors.toList());
6767

6868
assertThat(customersWithMoreThan100Points).hasSize(2);
@@ -81,7 +81,7 @@ public void givenListOfCustomersWithOptional_whenFilterBy100Points_thenGetTwo()
8181
.flatMap(c -> c
8282
.map(Stream::of)
8383
.orElseGet(Stream::empty))
84-
.filter(Customer::hasOverThousandPoints)
84+
.filter(Customer::hasOverHundredPoints)
8585
.collect(Collectors.toList());
8686

8787
assertThat(customersWithMoreThan100Points).hasSize(2);
@@ -156,4 +156,5 @@ public void givenListOfCustomers_whenFilterWithTryCatchAndRuntime_thenThrowExcep
156156
})
157157
.collect(Collectors.toList())).isInstanceOf(RuntimeException.class);
158158
}
159+
159160
}

0 commit comments

Comments
 (0)