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

ru.greatbit.utils.collection.ListUtils Maven / Gradle / Ivy

package ru.greatbit.utils.collection;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * Created by azee on 4/29/14.
 */
public class ListUtils {

    /**
     * Merge lists
     * @param first - List
     * @param second - List
     * @return - List
     */
    public static  List mergeLists(List first, List second){
        Map dataMap = listToMap(first);

        for (T object : second){
            dataMap.put(object, object);
        }

        List resultObject = new LinkedList();
        for (T object : dataMap.keySet()){
            resultObject.add(object);
        }
        return resultObject;
    }

    /**
     * Get differences of lists
     * @param first - List
     * @param second - List
     * @param  - Object class
     * @return Difference object
     */
    public static Difference getDiff(List first, List second){
        Map firstMap = listToMap(first);
        Map secondMap = listToMap(second);

        Difference difference = new Difference();

        for (T object : secondMap.keySet()){
            if (firstMap.get(object) == null){
                difference.getAdded().add(object);
            } else {
                difference.getEqual().add(object);
            }
        }

        for (T object : firstMap.keySet()){
            if (secondMap.get(object) == null){
                difference.getRemoved().add(object);
            }
        }

        return difference;
    }

    /**
     * Load a list to a map
     * @param input - List
     * @param  - Class of objects
     * @return - Map
     */
    private static Map listToMap(List input){
        Map dataMap = new HashMap();
        for (T object : input){
            dataMap.put(object, object);
        }
        return dataMap;
    }

}