added more methods
This commit is contained in:
@@ -4,14 +4,19 @@
|
|||||||
package io.pratik;
|
package io.pratik;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.IntStream;
|
import java.util.stream.IntStream;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author pratikdas
|
* @author pratikdas
|
||||||
*
|
*
|
||||||
@@ -22,6 +27,7 @@ public class CollectionHelper {
|
|||||||
// determine the endpoints to use in `list.subList()` method
|
// determine the endpoints to use in `list.subList()` method
|
||||||
int[] endpoints = {0, (listToSplit.size() + 1)/2, listToSplit.size()};
|
int[] endpoints = {0, (listToSplit.size() + 1)/2, listToSplit.size()};
|
||||||
|
|
||||||
|
|
||||||
List<List<T>> sublists =
|
List<List<T>> sublists =
|
||||||
IntStream.rangeClosed(0, 1)
|
IntStream.rangeClosed(0, 1)
|
||||||
.mapToObj(i -> listToSplit.subList(endpoints[i], endpoints[i + 1]))
|
.mapToObj(i -> listToSplit.subList(endpoints[i], endpoints[i + 1]))
|
||||||
@@ -49,7 +55,7 @@ public class CollectionHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<Integer> union(final List<Integer> collA, final List<Integer> collB){
|
public List<Integer> union(final List<Integer> collA, final List<Integer> collB){
|
||||||
Set<Integer> set = new HashSet<>();
|
Set<Integer> set = new LinkedHashSet<>();
|
||||||
set.addAll(collA);
|
set.addAll(collA);
|
||||||
set.addAll(collB);
|
set.addAll(collB);
|
||||||
|
|
||||||
@@ -70,6 +76,49 @@ public class CollectionHelper {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Collection<List<Integer>> partition(final List<Integer> collA, final int chunkSize){
|
||||||
|
final AtomicInteger counter = new AtomicInteger();
|
||||||
|
|
||||||
|
final Collection<List<Integer>> result = collA.stream()
|
||||||
|
.collect(Collectors.groupingBy(it -> counter.getAndIncrement() / chunkSize))
|
||||||
|
.values();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<Integer> removeDuplicates(final List<Integer> collA){
|
||||||
|
List<Integer> listWithoutDuplicates = new ArrayList<>(
|
||||||
|
new LinkedHashSet<>(collA));
|
||||||
|
|
||||||
|
return listWithoutDuplicates;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Integer> xor(final List<Integer> collA, final List<Integer> collB){
|
||||||
|
|
||||||
|
List<Integer> listOfAnotInB = collA.stream().filter(element->{
|
||||||
|
return !collB.contains(element);
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<Integer> listOfBnotInA = collB.stream().filter(element->{
|
||||||
|
return !collA.contains(element);
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
|
return Stream.concat(listOfAnotInB.stream(),
|
||||||
|
listOfBnotInA.stream())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Integer> not(final List<Integer> collA, final List<Integer> collB){
|
||||||
|
|
||||||
|
List<Integer> notList = collA.stream().filter(element->{
|
||||||
|
return !collB.contains(element);
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
|
return notList;
|
||||||
|
}
|
||||||
|
|
||||||
public List<Integer> subtract(final List<Integer> collA, final List<Integer> collB){
|
public List<Integer> subtract(final List<Integer> collA, final List<Integer> collB){
|
||||||
List<Integer> intersectElements = intersection(collA,collB);
|
List<Integer> intersectElements = intersection(collA,collB);
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,10 @@
|
|||||||
*/
|
*/
|
||||||
package io.pratik.tests;
|
package io.pratik.tests;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
@@ -38,12 +42,12 @@ class CollectionHelperTest {
|
|||||||
@Test
|
@Test
|
||||||
void testUnion() {
|
void testUnion() {
|
||||||
List<Integer> union = collectionHelper.union(
|
List<Integer> union = collectionHelper.union(
|
||||||
List.of(9,8,5,4,7),
|
List.of(9, 8, 5, 4, 7),
|
||||||
List.of(1,3,99,4,7));
|
List.of(1, 3, 99, 4, 7));
|
||||||
|
|
||||||
|
|
||||||
Assertions.assertArrayEquals(
|
Assertions.assertArrayEquals(
|
||||||
List.of(1, 3, 99, 4, 5, 7, 8, 9).toArray(),
|
List.of(9, 8, 5, 4, 7, 1, 3, 99).toArray(),
|
||||||
union.toArray());
|
union.toArray());
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -59,6 +63,28 @@ class CollectionHelperTest {
|
|||||||
intersection.toArray());
|
intersection.toArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testXOR() {
|
||||||
|
List<Integer> xorList = collectionHelper.xor(
|
||||||
|
List.of(9, 8, 5, 4, 7),
|
||||||
|
List.of(1, 99, 4, 7));
|
||||||
|
|
||||||
|
Assertions.assertArrayEquals(
|
||||||
|
List.of(9, 8, 5, 1, 99).toArray(),
|
||||||
|
xorList.toArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testNOT() {
|
||||||
|
List<Integer> xorList = collectionHelper.not(
|
||||||
|
List.of(9,8,5,4,7),
|
||||||
|
List.of(1,99,4,7));
|
||||||
|
|
||||||
|
Assertions.assertArrayEquals(
|
||||||
|
List.of(9,8,5).toArray(),
|
||||||
|
xorList.toArray());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAddition() {
|
void testAddition() {
|
||||||
List<Integer> sub = collectionHelper.add(
|
List<Integer> sub = collectionHelper.add(
|
||||||
@@ -96,10 +122,48 @@ class CollectionHelperTest {
|
|||||||
sub.toArray());
|
sub.toArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testPartition() {
|
||||||
|
Collection<List<Integer>> partitions = collectionHelper.partition(
|
||||||
|
List.of(9, 8, 5, 4, 7, 15, 15), 2);
|
||||||
|
|
||||||
|
Iterator<List<Integer>> iter = partitions.iterator();
|
||||||
|
|
||||||
|
int loop = 0;
|
||||||
|
while(iter.hasNext()) {
|
||||||
|
List<Integer> element = iter.next();
|
||||||
|
System.out.println(element);
|
||||||
|
if(loop == 0)
|
||||||
|
assertArrayEquals(List.of(9, 8).toArray(),element.toArray());
|
||||||
|
else if(loop == 1)
|
||||||
|
assertArrayEquals(List.of(5, 4).toArray(),element.toArray());
|
||||||
|
else if(loop == 2)
|
||||||
|
assertArrayEquals(List.of(7, 15).toArray(),element.toArray());
|
||||||
|
else if(loop == 3)
|
||||||
|
assertArrayEquals(List.of(15).toArray(),element.toArray());
|
||||||
|
|
||||||
|
++loop;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testRemoveDuplicates() {
|
||||||
|
List<Integer> uniqueElements = collectionHelper.removeDuplicates(
|
||||||
|
List.of(9, 8, 5, 4, 4, 7, 15, 15));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Assertions.assertArrayEquals(
|
||||||
|
List.of(9, 8, 5, 4, 7, 15).toArray(),
|
||||||
|
uniqueElements.toArray());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testSplit() {
|
void testSplit() {
|
||||||
List<Integer>[] subLists = collectionHelper.split(
|
List<Integer>[] subLists = collectionHelper.split(
|
||||||
List.of(9,8,5,4,7, 15, 15));
|
List.of(9, 8, 5, 4, 7, 15, 15));
|
||||||
|
|
||||||
|
|
||||||
Assertions.assertArrayEquals(
|
Assertions.assertArrayEquals(
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user