add nonNullArray and mergeLists

This commit is contained in:
2023-01-19 16:11:54 -06:00
parent f9408716ac
commit 1c150e207a
2 changed files with 82 additions and 0 deletions

View File

@ -415,6 +415,22 @@ public class CollectionUtils
/*******************************************************************************
** Returns the input array, unless it was null - in which case a new (empty) array is returned.
**
** Meant to help avoid null checks on foreach loops.
*******************************************************************************/
public static <T> T[] nonNullArray(T[] array)
{
if(array == null)
{
return (T[]) new ArrayList<T>().toArray();
}
return (array);
}
/*******************************************************************************
** Returns the input list, unless it was null - in which case a new array list is returned.
**
@ -513,4 +529,25 @@ public class CollectionUtils
return (mapper.convertValue(o, Map.class));
}
/*******************************************************************************
**
*******************************************************************************/
public static <T> List<T> mergeLists(List<T>... lists)
{
List<T> rs = new ArrayList<>();
if(lists != null)
{
for(List<T> list : lists)
{
if(list != null)
{
rs.addAll(list);
}
}
}
return (rs);
}
}

View File

@ -30,6 +30,7 @@ import java.util.Map;
import java.util.function.Function;
import com.kingsrook.qqq.backend.core.BaseTest;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
@ -499,4 +500,48 @@ class CollectionUtilsTest extends BaseTest
assertEquals(list, accumulator);
}
/*******************************************************************************
**
*******************************************************************************/
@Test
void testNonNullArray()
{
assertArrayEquals(new Integer[] { }, CollectionUtils.nonNullArray(null));
assertArrayEquals(new Integer[] { }, CollectionUtils.nonNullArray(new Integer[] { }));
assertArrayEquals(new Integer[] { 1, 2, 3 }, CollectionUtils.nonNullArray(new Integer[] { 1, 2, 3 }));
}
/*******************************************************************************
**
*******************************************************************************/
@Test
void testNonNullList()
{
assertEquals(List.of(), CollectionUtils.nonNullList(null));
assertEquals(List.of(), CollectionUtils.nonNullList(List.of()));
assertEquals(List.of(1, 2, 3), CollectionUtils.nonNullList(List.of(1, 2, 3)));
}
/*******************************************************************************
**
*******************************************************************************/
@Test
void testMergeLists()
{
assertEquals(List.of(), CollectionUtils.mergeLists());
assertEquals(List.of(), CollectionUtils.mergeLists((List<Object>) null));
assertEquals(List.of(), CollectionUtils.mergeLists((List<Object>[]) null));
assertEquals(List.of(), CollectionUtils.mergeLists(List.of()));
assertEquals(List.of(1, 2, 3), CollectionUtils.mergeLists(List.of(1, 2, 3)));
assertEquals(List.of(1, 2, 3), CollectionUtils.mergeLists(List.of(1, 2), List.of(3)));
assertEquals(List.of(1, 2, 3), CollectionUtils.mergeLists(List.of(1, 2), null, List.of(3)));
assertEquals(List.of(1, 2, 3), CollectionUtils.mergeLists(null, List.of(1, 2, 3), null));
}
}