commit
84f0d7de4b
|
@ -0,0 +1,47 @@
|
||||||
|
package com.baeldung.commons.collectionutil;
|
||||||
|
|
||||||
|
public class Address {
|
||||||
|
|
||||||
|
String locality;
|
||||||
|
String city;
|
||||||
|
String zip;
|
||||||
|
|
||||||
|
public String getLocality() {
|
||||||
|
return locality;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLocality(String locality) {
|
||||||
|
this.locality = locality;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCity() {
|
||||||
|
return city;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCity(String city) {
|
||||||
|
this.city = city;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getZip() {
|
||||||
|
return zip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZip(String zip) {
|
||||||
|
this.zip = zip;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("Address [locality=").append(locality).append(", city=").append(city).append(", zip=").append(zip).append("]");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Address(String locality, String city, String zip) {
|
||||||
|
super();
|
||||||
|
this.locality = locality;
|
||||||
|
this.city = city;
|
||||||
|
this.zip = zip;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,118 @@
|
||||||
|
package com.baeldung.commons.collectionutil;
|
||||||
|
|
||||||
|
public class Customer implements Comparable<Customer> {
|
||||||
|
|
||||||
|
Integer id;
|
||||||
|
String name;
|
||||||
|
Long phone;
|
||||||
|
String locality;
|
||||||
|
String city;
|
||||||
|
String zip;
|
||||||
|
|
||||||
|
public Integer getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Integer id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getPhone() {
|
||||||
|
return phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPhone(Long phone) {
|
||||||
|
this.phone = phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLocality() {
|
||||||
|
return locality;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLocality(String locality) {
|
||||||
|
this.locality = locality;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCity() {
|
||||||
|
return city;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCity(String city) {
|
||||||
|
this.city = city;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getZip() {
|
||||||
|
return zip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZip(String zip) {
|
||||||
|
this.zip = zip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Customer(Integer id, String name, Long phone, String locality, String city, String zip) {
|
||||||
|
super();
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.phone = phone;
|
||||||
|
this.locality = locality;
|
||||||
|
this.city = city;
|
||||||
|
this.zip = zip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Customer(Integer id, String name, Long phone) {
|
||||||
|
super();
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.phone = phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Customer(String name) {
|
||||||
|
super();
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 1;
|
||||||
|
result = prime * result + ((name == null) ? 0 : name.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
return false;
|
||||||
|
Customer other = (Customer) obj;
|
||||||
|
if (name == null) {
|
||||||
|
if (other.name != null)
|
||||||
|
return false;
|
||||||
|
} else if (!name.equals(other.name))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int compareTo(Customer o) {
|
||||||
|
return this.name.compareTo(o.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("Customer [id=").append(id).append(", name=").append(name).append(", phone=").append(phone).append("]");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,110 @@
|
||||||
|
package com.baeldung.commons.collections;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baeldung.commons.collectionutil.Address;
|
||||||
|
import com.baeldung.commons.collectionutil.Customer;
|
||||||
|
import org.apache.commons.collections4.Closure;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
import org.apache.commons.collections4.Predicate;
|
||||||
|
import org.apache.commons.collections4.Transformer;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
public class CollectionUtilsGuideTest {
|
||||||
|
|
||||||
|
|
||||||
|
Customer customer1 = new Customer(1, "Daniel", 123456l, "locality1", "city1", "1234");
|
||||||
|
Customer customer4 = new Customer(4, "Bob", 456789l, "locality4", "city4", "4567");
|
||||||
|
List<Customer> list1, list2, list3, linkedList1;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
Customer customer2 = new Customer(2, "Fredrik", 234567l, "locality2", "city2", "2345");
|
||||||
|
Customer customer3 = new Customer(3, "Kyle", 345678l, "locality3", "city3", "3456");
|
||||||
|
Customer customer5 = new Customer(5, "Cat", 567890l, "locality5", "city5", "5678");
|
||||||
|
Customer customer6 = new Customer(6, "John", 678901l, "locality6", "city6", "6789");
|
||||||
|
|
||||||
|
list1 = Arrays.asList(customer1, customer2, customer3);
|
||||||
|
list2 = Arrays.asList(customer4, customer5, customer6);
|
||||||
|
list3 = Arrays.asList(customer1, customer2);
|
||||||
|
|
||||||
|
linkedList1 = new LinkedList<>(list1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenList_whenAddIgnoreNull_thenNoNullAdded() {
|
||||||
|
CollectionUtils.addIgnoreNull(list1, null);
|
||||||
|
assertFalse(list1.contains(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenTwoSortedLists_whenCollated_thenSorted() {
|
||||||
|
List<Customer> sortedList = CollectionUtils.collate(list1, list2);
|
||||||
|
assertTrue(sortedList.get(0).getName().equals("Bob"));
|
||||||
|
assertTrue(sortedList.get(2).getName().equals("Daniel"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenListOfCustomers_whenTransformed_thenListOfAddress() {
|
||||||
|
Collection<Address> addressCol = CollectionUtils.collect(list1, customer -> {
|
||||||
|
return new Address(customer.getLocality(), customer.getCity(), customer.getZip());
|
||||||
|
});
|
||||||
|
|
||||||
|
List<Address> addressList = new ArrayList<>(addressCol);
|
||||||
|
assertTrue(addressList.size() == 3);
|
||||||
|
assertTrue(addressList.get(0).getLocality().equals("locality1"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenCustomerList_WhenFiltered_thenCorrectSize() {
|
||||||
|
|
||||||
|
boolean isModified = CollectionUtils.filter(linkedList1, customer -> Arrays.asList("Daniel","Kyle").contains(customer.getName()));
|
||||||
|
|
||||||
|
//filterInverse does the opposite. It removes the element from the list if the Predicate returns true
|
||||||
|
//select and selectRejected work the same way except that they do not remove elements from the given collection and return a new collection
|
||||||
|
|
||||||
|
assertTrue(isModified && linkedList1.size() == 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenNonEmptyList_whenCheckedIsNotEmpty_thenTrue() {
|
||||||
|
List<Customer> emptyList = new ArrayList<>();
|
||||||
|
List<Customer> nullList = null;
|
||||||
|
|
||||||
|
//Very handy at times where we want to check if a collection is not null and not empty too.
|
||||||
|
//isNotEmpty does the opposite. Handy because using ! operator on isEmpty makes it missable while reading
|
||||||
|
assertTrue(CollectionUtils.isNotEmpty(list1));
|
||||||
|
assertTrue(CollectionUtils.isEmpty(nullList));
|
||||||
|
assertTrue(CollectionUtils.isEmpty(emptyList));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenCustomerListAndASubcollection_whenChecked_thenTrue() {
|
||||||
|
assertTrue(CollectionUtils.isSubCollection(list3, list1));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenTwoLists_whenIntersected_thenCheckSize() {
|
||||||
|
Collection<Customer> intersection = CollectionUtils.intersection(list1, list3);
|
||||||
|
assertTrue(intersection.size() == 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenTwoLists_whenSubtracted_thenCheckElementNotPresentInA() {
|
||||||
|
Collection<Customer> result = CollectionUtils.subtract(list1, list3);
|
||||||
|
assertFalse(result.contains(customer1));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenTwoLists_whenUnioned_thenCheckElementPresentInResult() {
|
||||||
|
Collection<Customer> union = CollectionUtils.union(list1, list2);
|
||||||
|
assertTrue(union.contains(customer1));
|
||||||
|
assertTrue(union.contains(customer4));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue