Skip to content

Commit b41e0e8

Browse files
authored
BAEL-5419: List vs ArrayList in Java + tests (eugenp#11936)
* BAEL-5419: List vs ArrayList in Java + tests * BAEL-5419: Updated code +tests as per review comments * BAEL-5419: Fixed failing tests * BAEL-5419: Fixed JUnit test as per review comments
1 parent 80924c2 commit b41e0e8

5 files changed

Lines changed: 336 additions & 0 deletions

File tree

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.baeldung.list.listvsarraylist;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.Locale;
6+
import java.util.stream.Collectors;
7+
import java.util.stream.Stream;
8+
9+
public class ArrayListDemo {
10+
11+
private ArrayList<Passenger> passengers = new ArrayList<>(20);
12+
// private LinkedList<Passenger> passengers = new LinkedList<>(); // compile time error
13+
14+
public ArrayList<Passenger> addPassenger(Passenger passenger) {
15+
passengers.add(passenger);
16+
return passengers;
17+
}
18+
19+
public ArrayList<Passenger> removePassenger(Passenger passenger) {
20+
passengers.remove(passenger);
21+
return passengers;
22+
}
23+
24+
public ArrayList<Passenger> getPassengersBySource(String source) {
25+
return new ArrayList<Passenger>(passengers.stream()
26+
.filter(it -> it.getSource().equals(source))
27+
.collect(Collectors.toList()));
28+
}
29+
30+
public ArrayList<Passenger> getPassengersByDestination(String destination) {
31+
return new ArrayList<Passenger> (passengers.stream()
32+
.filter(it -> it.getDestination().equals(destination))
33+
.collect(Collectors.toList()));
34+
}
35+
36+
public long getKidsCount(ArrayList<Passenger> passengerList) {
37+
return passengerList.stream()
38+
.filter(it -> (it.getAge() <= 10))
39+
.count();
40+
}
41+
42+
public ArrayList<Passenger> getFinalPassengersList() {
43+
return new ArrayList<Passenger> (Collections.unmodifiableList(passengers));
44+
}
45+
46+
public ArrayList<String> getServicedCountries() {
47+
return new ArrayList<String> (Stream.of(Locale.getISOCountries())
48+
.collect(Collectors.toList()));
49+
}
50+
51+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.baeldung.list.listvsarraylist;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.LinkedList;
6+
import java.util.List;
7+
import java.util.Locale;
8+
import java.util.stream.Collectors;
9+
import java.util.stream.Stream;
10+
11+
public class ListDemo {
12+
13+
private List<Passenger> passengers = new ArrayList<>(20);
14+
// private List<Passenger> passengers = new LinkedList<>(); // No compile time error
15+
16+
public List<Passenger> addPassenger(Passenger passenger) {
17+
passengers.add(passenger);
18+
return passengers;
19+
}
20+
21+
public List<Passenger> removePassenger(Passenger passenger) {
22+
passengers.remove(passenger);
23+
return passengers;
24+
}
25+
26+
public List<Passenger> getPassengersBySource(String source) {
27+
return passengers.stream()
28+
.filter(it -> it.getSource().equals(source))
29+
.collect(Collectors.toList());
30+
}
31+
32+
public List<Passenger> getPassengersByDestination(String destination) {
33+
return passengers.stream()
34+
.filter(it -> it.getDestination().equals(destination))
35+
.collect(Collectors.toList());
36+
}
37+
38+
public long getKidsCount(List<Passenger> passengerList) {
39+
return passengerList.stream()
40+
.filter(it -> (it.getAge() <= 10))
41+
.count();
42+
}
43+
44+
public List<Passenger> getFinalPassengersList() {
45+
return Collections.unmodifiableList(passengers);
46+
}
47+
48+
public List<String> getServicedCountries() {
49+
return Stream.of(Locale.getISOCountries())
50+
.collect(Collectors.toList());
51+
}
52+
53+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.baeldung.list.listvsarraylist;
2+
3+
public class Passenger {
4+
5+
private String name;
6+
private int age;
7+
private String source;
8+
private String destination;
9+
10+
public Passenger(String name, int age, String source, String destination) {
11+
this.name = name;
12+
this.age = age;
13+
this.source = source;
14+
this.destination = destination;
15+
}
16+
17+
public String getName() {
18+
return name;
19+
}
20+
21+
public void setName(String name) {
22+
this.name = name;
23+
}
24+
25+
public int getAge() {
26+
return age;
27+
}
28+
29+
public void setAge(int age) {
30+
this.age = age;
31+
}
32+
33+
public String getSource() {
34+
return source;
35+
}
36+
37+
public void setSource(String source) {
38+
this.source = source;
39+
}
40+
41+
public String getDestination() {
42+
return destination;
43+
}
44+
45+
public void setDestination(String destination) {
46+
this.destination = destination;
47+
}
48+
49+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package com.baeldung.list.listvsarraylist;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.junit.Assert.assertNotNull;
5+
6+
import java.util.ArrayList;
7+
import java.util.Locale;
8+
9+
import org.junit.jupiter.api.BeforeEach;
10+
import org.junit.jupiter.api.Test;
11+
12+
class ArrayListDemoUnitTest {
13+
14+
ArrayListDemo application = new ArrayListDemo();
15+
16+
Passenger passenger1;
17+
Passenger passenger2;
18+
Passenger passenger3;
19+
20+
@BeforeEach
21+
protected void setUp() {
22+
passenger1 = new Passenger("Anna", 25, "London", "New York");
23+
passenger2 = new Passenger("Binny", 35, "New York", "London");
24+
passenger3 = new Passenger("Chandra", 8, "Paris", "New Delhi");
25+
application.addPassenger(passenger1);
26+
application.addPassenger(passenger2);
27+
application.addPassenger(passenger3);
28+
}
29+
30+
@Test
31+
public void givenEmptyList_whenAddedPassenger_thenReturnCurrentPassengerList() {
32+
ArrayList<Passenger> list = application.addPassenger(new Passenger("David", 54, "Milan", "Paris"));
33+
34+
assertNotNull(list);
35+
assertThat(list).hasSize(4);
36+
}
37+
38+
@Test
39+
public void givenPassengerList_whenRemovedPassenger_thenReturnCurrentPassengerList() {
40+
ArrayList<Passenger> list = application.removePassenger(passenger3);
41+
42+
assertNotNull(list);
43+
assertThat(list).hasSize(2);
44+
}
45+
46+
@Test
47+
public void givenPassengerList_whenPassedWithSourceCity_thenReturnMatchingPassengerList() {
48+
ArrayList<Passenger> list = application.getPassengersBySource("Singapore");
49+
ArrayList<Passenger> list2 = application.getPassengersBySource("London");
50+
51+
assertThat(list).isEmpty();
52+
assertThat(list2.get(0)).isEqualTo(passenger1);
53+
}
54+
55+
@Test
56+
public void givenPassengerList_whenPassedWithDestinationCity_thenReturnMatchingPassengerList() {
57+
ArrayList<Passenger> list = application.getPassengersByDestination("Singapore");
58+
ArrayList<Passenger> list2 = application.getPassengersByDestination("London");
59+
60+
assertThat(list).isEmpty();
61+
assertThat(list2.get(0)).isEqualTo(passenger2);
62+
}
63+
64+
@Test
65+
public void givenPassengerList_whenFindKidsByAge_thenReturnKidsList() {
66+
ArrayList<Passenger> list = new ArrayList<>();
67+
list.add(passenger1);
68+
list.add(passenger2);
69+
list.add(passenger3);
70+
long count = application.getKidsCount(list);
71+
72+
assertThat(count).isEqualTo(1);
73+
}
74+
75+
@Test
76+
public void givenPassengerList_whenCalledWithCollectionsFunction_thenReturnsListType() {
77+
ArrayList<Passenger> list = application.getFinalPassengersList();
78+
79+
assertNotNull(list);
80+
assertThat(list).hasSize(3);
81+
}
82+
83+
@Test
84+
public void givenCurrentLocale_whenUsingStreams_thenReturnsListType() {
85+
ArrayList<String> servicedCountries = application.getServicedCountries();
86+
87+
assertNotNull(servicedCountries);
88+
assertThat(servicedCountries).hasSize(Locale.getISOCountries().length);
89+
}
90+
91+
}
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package com.baeldung.list.listvsarraylist;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.junit.Assert.assertNotNull;
5+
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
import java.util.Locale;
9+
10+
import org.junit.jupiter.api.BeforeEach;
11+
import org.junit.jupiter.api.Test;
12+
13+
class ListDemoUnitTest {
14+
15+
ListDemo application = new ListDemo();
16+
17+
Passenger passenger1;
18+
Passenger passenger2;
19+
Passenger passenger3;
20+
21+
@BeforeEach
22+
protected void setUp() {
23+
passenger1 = new Passenger("Anna", 25, "London", "New York");
24+
passenger2 = new Passenger("Binny", 35, "New York", "London");
25+
passenger3 = new Passenger("Chandra", 8, "Paris", "New Delhi");
26+
application.addPassenger(passenger1);
27+
application.addPassenger(passenger2);
28+
application.addPassenger(passenger3);
29+
}
30+
31+
@Test
32+
public void givenEmptyList_whenAddedPassenger_thenReturnCurrentPassengerList() {
33+
List<Passenger> list = application.addPassenger(new Passenger("David", 54, "Milan", "Paris"));
34+
35+
assertNotNull(list);
36+
assertThat(list).hasSize(4);
37+
}
38+
39+
@Test
40+
public void givenPresentList_whenRemovedPassenger_thenReturnCurrentPassengerList() {
41+
List<Passenger> list = application.removePassenger(passenger3);
42+
43+
assertNotNull(list);
44+
assertThat(list).hasSize(2);
45+
}
46+
47+
@Test
48+
public void givenPresentList_whenPassedWithSourceCity_thenReturnMatchingPassengerList() {
49+
List<Passenger> list = application.getPassengersBySource("Singapore");
50+
List<Passenger> list2 = application.getPassengersBySource("London");
51+
52+
assertThat(list).isEmpty();
53+
assertThat(list2.get(0)).isEqualTo(passenger1);
54+
}
55+
56+
@Test
57+
public void givenPresentList_whenPassedWithDestinationCity_thenReturnMatchingPassengerList() {
58+
List<Passenger> list = application.getPassengersByDestination("Singapore");
59+
List<Passenger> list2 = application.getPassengersByDestination("London");
60+
61+
assertThat(list).isEmpty();
62+
assertThat(list2.get(0)).isEqualTo(passenger2);
63+
}
64+
65+
@Test
66+
public void givenPassengerList_whenFindKidsByAge_thenReturnKidsList() {
67+
List<Passenger> list = new ArrayList<>();
68+
list.add(passenger1);
69+
list.add(passenger2);
70+
list.add(passenger3);
71+
long count = application.getKidsCount(list);
72+
73+
assertThat(count).isEqualTo(1);
74+
}
75+
76+
@Test
77+
public void givenPresentList_whenCalledWithCollectionsFunction_thenReturnsListType() {
78+
List<Passenger> list = application.getFinalPassengersList();
79+
80+
assertNotNull(list);
81+
assertThat(list).hasSize(3);
82+
}
83+
84+
@Test
85+
public void givenCurrentLocale_whenUsingStreams_thenReturnsListType() {
86+
List<String> servicedCountries = application.getServicedCountries();
87+
88+
assertNotNull(servicedCountries);
89+
assertThat(servicedCountries).hasSize(Locale.getISOCountries().length);
90+
}
91+
92+
}

0 commit comments

Comments
 (0)