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

com.xyzwps.lib.dollar.Helper Maven / Gradle / Ivy

The newest version!
package com.xyzwps.lib.dollar;

import java.util.Comparator;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.function.Function;

class Helper {
    static final class Counter {
        private int count = 0;

        Counter(int init) {
            this.count = init;
        }

        int getAndIncr() {
            return count++;
        }

        int get() {
            return count;
        }
    }

    static class Holder {
        T value;

        Holder(T value) {
            this.value = value;
        }
    }

    /**
     * Create an ascending order comparator.
     *
     * @param toKey for getting element key
     * @param    element type
     * @param    element key type
     * @return ascending comparator
     */
    static > Comparator ascComparator(Function toKey) {
        return Comparator.comparing(toKey);
    }


    /**
     * Create a descending order comparator.
     *
     * @param toKey for getting element key
     * @param    element type
     * @param    element key type
     * @return descending comparator
     */
    static > Comparator descComparator(Function toKey) {
        return (o1, o2) -> toKey.apply(o2).compareTo(toKey.apply(o1));
    }

    /**
     * An empty iterator. You can get nothing here.
     *
     * @param  element type. Haha.
     */
    static class EmptyIterator implements Iterator {

        @Override
        public boolean hasNext() {
            return false;
        }

        @Override
        public T next() {
            throw new NoSuchElementException();
        }

        private EmptyIterator() {
        }

        /**
         * Create an empty iterator.
         *
         * @param  element type
         * @return an empty iterator
         */
        public static  Iterator create() {
            return new EmptyIterator<>();
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy