Skip to content

Commit d188e09

Browse files
Diego DomínguezDiego Domínguez
authored andcommitted
Added sort and compare collection methods
1 parent 87b869a commit d188e09

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

src/main/java/com/seniorglez/functionalJava/collections/CollectionsUtils.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525

2626
import java.lang.reflect.Constructor;
2727
import java.util.Collection;
28+
import java.util.Collections;
29+
import java.util.Comparator;
2830
import java.util.Iterator;
2931
import java.util.LinkedList;
3032
import java.util.List;
@@ -176,7 +178,7 @@ public static <T> Collection<T> concat(Collection<T> a, Collection<T> b) {
176178
}
177179

178180
/**
179-
* Return a new List which the elements of the given collections.
181+
* Return a new List which the elements of the given Lists.
180182
*
181183
* @param a First List given.
182184
* @param b Second List given.
@@ -204,6 +206,32 @@ public static <T> T last(Collection<T> collection) {
204206
return toList(collection).get(collection.size() - 1);
205207
}
206208

209+
210+
/**
211+
* Return true if the collections have the same elements.
212+
*
213+
* @param a First Collection given.
214+
* @param b Second Collection given.
215+
* @param comparator The comparator needed to sort the elements.
216+
*/
217+
public static <T> boolean compareCollections(Collection<T> a, Collection<T> b, Comparator<T> comparator) {
218+
Collection <T> sortedA = sort(a, comparator);
219+
Collection <T> sortedB = sort(a, comparator);
220+
return sortedA.equals(sortedB);
221+
}
222+
223+
/**
224+
* Return a new sorted List from the given collection.
225+
*
226+
* @param collection The Collection given.
227+
* @param comparator The comparator needed to sort the elements.
228+
*/
229+
public static <T> List<T> sort(Collection<T> collection, Comparator<T> comparator) {
230+
List<T> list = toList(collection);
231+
Collections.sort(list,comparator);
232+
return list;
233+
}
234+
207235
//private methods
208236

209237
private static Collection instanceCollectionOf(Class<? extends Collection> tClass) {

src/test/java/com/seniorglez/functionalJava/collections/TestCollectionsUtils.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44
import org.junit.Test;
55

66
import java.util.Collection;
7+
import java.util.Comparator;
78
import java.util.LinkedList;
89
import java.util.List;
910

1011
import static com.seniorglez.functionalJava.collections.CollectionsUtils.anyMatch;
12+
import static com.seniorglez.functionalJava.collections.CollectionsUtils.compareCollections;
1113
import static com.seniorglez.functionalJava.collections.CollectionsUtils.concat;
1214
import static com.seniorglez.functionalJava.collections.CollectionsUtils.findIndex;
1315
import static com.seniorglez.functionalJava.collections.CollectionsUtils.first;
1416
import static com.seniorglez.functionalJava.collections.CollectionsUtils.isEmpty;
1517
import static com.seniorglez.functionalJava.collections.CollectionsUtils.last;
18+
import static com.seniorglez.functionalJava.collections.CollectionsUtils.sort;
1619
import static org.junit.Assert.assertTrue;
1720

1821
public class TestCollectionsUtils {
@@ -282,4 +285,29 @@ public void testLast() {
282285
assertTrue(last(a) == "Urdin");
283286
}
284287

288+
@Test
289+
public void testCompareCollectionsShouldReturnTrue() {
290+
Collection<String> a = new LinkedList<>();
291+
a.add("Gorri");
292+
a.add("Beltz");
293+
a.add("Hori");
294+
a.add("Urdin");
295+
Collection<String> b = new LinkedList<>();
296+
b.add("Beltz");
297+
b.add("Gorri");
298+
b.add("Hori");
299+
b.add("Urdin");
300+
assertTrue(compareCollections(a,b, Comparator.naturalOrder()));
301+
}
302+
303+
@Test
304+
public void testNaturalOrderSort() {
305+
Collection<String> a = new LinkedList<>();
306+
a.add("Gorri");
307+
a.add("Beltz");
308+
a.add("Hori");
309+
a.add("Urdin");
310+
assertTrue(sort(a, Comparator.naturalOrder()).get(0).equals("Beltz"));
311+
}
312+
285313
}

0 commit comments

Comments
 (0)