All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.alapierre.func.CollectionUtils Maven / Gradle / Ivy

The newest version!
package io.alapierre.func;

import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * Created 03.06.19 copyright original authors 2019
 *
 * @author Adrian Lapierre {@literal }
 */
@SuppressWarnings("unused")
public class CollectionUtils {

    /**
     * Zwraca listę wartości powstałych przez wykonanie funkcji na każdym elemencie kolekcji wejściowej
     *
     * użycie — pobranie wszystkich id z kolekcji DTO: mapOnePropertyList(list, Dto::getId)`
     *
     * @param list kolekcja wejściowa
     * @param function funkcja, która zostanie wywołana na każdym elemencie kolekcji
     * @param  typ kolekcji wejściowej
     * @param  typ elementu zwracanego przez funkcję
     * @return lista elementów przekształconych przez funkcję
     */
    public static  List mapOnePropertyList(@NotNull Collection list, @NotNull Function function) {
        return list.stream().map(function).collect(Collectors.toList());
    }

    /**
     * Tworzy zbiór identyfikatorów dla podanej kolekcji wejściowej i funkcji mapującej element do jego identyfikatora
     *
     * @param source - kolekcja wejściowa
     * @param mapper - funkcja mapująca element na klucz
     * @param  typ klucza
     * @param  typ elementu kolekcji
     * @return zbiór kluczy
     */
    public static  Set toKeySet(@NotNull List source, @NotNull Function mapper) {
        return source
                .stream()
                .map(mapper)
                .collect(Collectors.toSet());
    }

    /**
     * Weryfikuje czy przekazana kolekcja jest pusta lub równa null
     *
     * @param collection kolekcja wejściowa
     * @return false, jeśli kolekcja nie jest pusta
     */
    @Contract(value = "null -> true", pure = true)
    public static boolean isEmpty(@Nullable Collection collection) {
        return collection == null || collection.isEmpty();
    }

    /**
     * Weryfikuje czy przekazana mapa jest pusta lub równa null
     *
     * @param map mapa wejściowa
     * @return false, jeśli mapa nie jest pusta
     */
    @Contract(value = "null -> true", pure = true)
    public static boolean isEmpty(@Nullable Map map) {
        return map == null || map.isEmpty();
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy