SimpleJavaEngine/src/main/java/speiger/src/coreengine/utils/collections/CollectionUtils.java

56 lines
1.5 KiB
Java

package speiger.src.coreengine.utils.collections;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import speiger.src.collections.ints.maps.impl.hash.Int2ObjectLinkedOpenHashMap;
import speiger.src.collections.ints.maps.impl.hash.Int2ObjectOpenHashMap;
import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.collections.objects.lists.ObjectList;
import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet;
import speiger.src.collections.objects.sets.ObjectOpenHashSet;
public class CollectionUtils
{
public static <T, K extends Collection<T>> K createSubCollection(List<T> list, int[] indecies, K result)
{
for(int i = 0;i<indecies.length;i++)
{
result.add(list.get(indecies[i]));
}
return result;
}
public static <T> Set<T>[] createSets(int size, boolean linked)
{
Set<T>[] sets = new Set[size];
for(int i = 0;i<size;i++)
{
sets[i] = linked ? new ObjectLinkedOpenHashSet<T>() : new ObjectOpenHashSet<T>();
}
return sets;
}
public static <T> ObjectList<T>[] createList(int size)
{
ObjectList<T>[] list = new ObjectList[size];
for(int i = 0;i<size;i++)
{
list[i] = new ObjectArrayList<>();
}
return list;
}
public static <T> Int2ObjectMap<T>[] createInt2ObjectMap(int size, boolean linked)
{
Int2ObjectMap<T>[] maps = new Int2ObjectMap[size];
for(int i = 0;i<size;i++)
{
maps[i] = linked ? new Int2ObjectLinkedOpenHashMap<T>() : new Int2ObjectOpenHashMap<T>();
}
return maps;
}
}