001package com.box.sdk.internal.utils; 002 003import java.util.Collection; 004import java.util.LinkedList; 005import java.util.List; 006 007/** 008 * {@link Collection} related utlities. 009 */ 010public class CollectionUtils { 011 012 /** 013 * Only static members. 014 */ 015 protected CollectionUtils() { 016 } 017 018 /** 019 * Re-maps a provided collection. 020 * 021 * @param <T_Result> 022 * type of result 023 * @param <T_Source> 024 * type of source 025 * @param source 026 * for mapping 027 * @param mapper 028 * element mapper 029 * @return mapped source 030 */ 031 public static <T_Result, T_Source> List<T_Result> map(Collection<T_Source> source, 032 Mapper<T_Result, T_Source> mapper) { 033 List<T_Result> result = new LinkedList<T_Result>(); 034 for (T_Source element : source) { 035 result.add(mapper.map(element)); 036 } 037 return result; 038 } 039 040 /** 041 * Contract for {@link Collection}-s mapping. 042 * 043 * @param <T_Result> 044 * type of result 045 * @param <T_Source> 046 * type of source 047 */ 048 public interface Mapper<T_Result, T_Source> { 049 050 /** 051 * Maps a provided value. 052 * 053 * @param input 054 * for mapping 055 * @return mapped value 056 */ 057 T_Result map(T_Source input); 058 059 } 060 061}