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

cyclops.ClojureConverters Maven / Gradle / Ivy

The newest version!
package cyclops;

import com.aol.cyclops2.data.collections.extensions.CollectionX;
import com.aol.cyclops2.types.foldable.To;
import cyclops.collections.clojure.*;
import cyclops.collections.immutable.PersistentMapX;
import clojure.lang.*;
import java.util.Comparator;

import java.util.HashMap;
import java.util.TreeMap;
import java.util.function.Function;

/**
 * Class for holding conversion methods between types
 * Use in conjunction with {@link To#to(Function)} for fluent conversions
 *
 * 
 *     {@code
 *      LinkedList list1 = ListX.of(1,2,3)
 *                                      .to(Converters::LinkedList);
        ArrayList list2 = ListX.of(1,2,3)
                                       .to(Converters::ArrayList);
 *     }
 *
 * 
*/ public interface ClojureConverters { public static PersistentHashMap PersistentHashMap(PersistentMapX vec){ return vec.unwrapNested(PersistentHashMap.class, ()->{ ClojureHashMapX map = ClojureHashMapX.copyFromMap(vec).unwrap(); return map.unwrap(); } ); } public static ,V> PersistentTreeMap PersistentTreeMap(PersistentMapX vec){ return vec.unwrapNested(PersistentTreeMap.class, ()->{ ClojureTreeMapX map = ClojureTreeMapX.copyFromMap((Comparator) Comparator.naturalOrder(),vec).unwrap(); return map.unwrap(); } ); } public static PersistentTreeMap PersistentTreeMap(PersistentMapX vec, Comparator comp){ return vec.unwrapNested(TreeMap.class, ()->{ ClojureTreeMapX map = ClojureTreeMapX.copyFromMap(comp,vec).unwrap(); return map.unwrap(); } ); } public static > PersistentTreeSet PersistentTreeSet(CollectionX vec){ return vec.unwrapNested(PersistentTreeSet.class, ()->{ ClojureTreeSetX set = ClojureTreeSetX.copyFromCollection(vec,(Comparator)Comparator.naturalOrder()).unwrap(); return set.unwrap(); }); } public static PersistentHashSet PersistentHashSet(CollectionX vec){ return vec.unwrapNested(PersistentHashSet.class, ()-> { ClojureHashSetX set = ClojureHashSetX.copyFromCollection(vec).unwrap(); return set.unwrap(); }); } public static PersistentTreeSet PersistentTreeSet(CollectionX vec, Comparator comp) { return vec.unwrapNested(PersistentTreeSet.class, () -> { ClojureTreeSetX set = ClojureTreeSetX.copyFromCollection(vec, comp).unwrap(); return set.unwrap(); }); } public static PersistentHashSet PersistentHashSet(CollectionX vec, Comparator comp) { return vec.unwrapNested(PersistentHashSet.class, () -> { ClojureHashSetX set = ClojureHashSetX.copyFromCollection(vec).unwrap(); return set.unwrap(); }); } public static PersistentQueue PersistentQueue(CollectionX vec){ return vec.unwrapNested(PersistentQueue.class, ()-> { ClojureQueueX queue = ClojureQueueX.copyFromCollection(vec).unwrap(); return queue.unwrap(); }); } public static PersistentList PersistentList(CollectionX vec){ return vec.unwrapNested(PersistentList.class, ()-> { ClojureListX vector = ClojureListX.copyFromCollection(vec).unwrap(); return vector.unwrap(); }); } public static PersistentVector PersistentVector(CollectionX vec){ return vec.unwrapNested(PersistentVector.class, ()-> { ClojureVectorX vector = ClojureVectorX.copyFromCollection(vec).unwrap(); return vector.unwrap(); }); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy