package com.box.sdk.internal.utils;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
/**
* {@link Collection} related utlities.
*/
public class CollectionUtils {
/**
* Only static members.
*/
protected CollectionUtils() {
}
/**
* Re-maps a provided collection.
*
* @param <T_Result>
* type of result
* @param <T_Source>
* type of source
* @param source
* for mapping
* @param mapper
* element mapper
* @return mapped source
*/
public static <T_Result, T_Source> List<T_Result> map(Collection<T_Source> source,
Mapper<T_Result, T_Source> mapper) {
List<T_Result> result = new LinkedList<T_Result>();
for (T_Source element : source) {
result.add(mapper.map(element));
}
return result;
}
/**
* Contract for {@link Collection}-s mapping.
*
* @param <T_Result>
* type of result
* @param <T_Source>
* type of source
*/
public interface Mapper<T_Result, T_Source> {
/**
* Maps a provided value.
*
* @param input
* for mapping
* @return mapped value
*/
T_Result map(T_Source input);
}
}