package org.lucares.utils; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; public class CollectionUtils { public static void mapInPlace(final List list, final Function mapper) { for (int i = 0; i < list.size(); i++) { final T value = list.get(i); final T newValue = mapper.apply(value); list.set(i, newValue); } } public static List map(final Collection list, final Function mapper) { final List result = new ArrayList<>(list.size()); for (final T t : list) { result.add(mapper.apply(t)); } return result; } public static List map(final T[] input, final Function mapper) { return Stream.of(input).map(mapper).collect(Collectors.toList()); } public static Map createMapFromValues(final Iterable iterable, final Function keyMapper) { final Map result = new HashMap<>(); for (final V value : iterable) { final T key = keyMapper.apply(value); result.put(key, value); } return result; } public static Map createMapFromKeys(final Iterable iterable, final Function valueMapper) { final Map result = new HashMap<>(); for (final KEY key : iterable) { final VALUE value = valueMapper.apply(key); result.put(key, value); } return result; } public static List filter(final Collection collection, final Predicate predicate) { return collection.stream().filter(predicate).collect(Collectors.toList()); } }