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

com.yelstream.topp.standard.util.MapBuilders Maven / Gradle / Ivy

The newest version!
/*
 * Project: Topp Standard
 * GitHub: https://github.com/sabroe/Topp-Standard
 *
 * Copyright 2024 Morten Sabroe Mortensen
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.yelstream.topp.standard.util;

import lombok.Singular;
import lombok.experimental.UtilityClass;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.function.Consumer;

@UtilityClass
public class MapBuilders {

    /*
     *
     * ConcurrentMap:
     *   -- thread-safe
     *   -- atomic
     *   ConcurrentHashMap
     *     --hashed
     *   ConcurrentSkipListMap
     *
     *
     *
     */

    @lombok.Builder(builderClassName="MapBuilder",builderMethodName="mapBuilder")
    private static  Map createMap(Map values,
                                            //Boolean immutable,
                                            //Boolean threadSafe,
                                            //Boolean concurrent,
                                            //Boolean sorted,
                                            //Boolean serializable,
                                            //Boolean unmodifiable,
                                            Consumer> consumer) {
        Map map=new HashMap<>();
        if (consumer!=null) {
            consumer.accept(map);
        }
        return map;
    }

/*
    public static class MapBuilder {

    }
*/

    @lombok.Builder(builderClassName="ConcurrentMapBuilder",builderMethodName="concurrentMapBuilder")
    private static  ConcurrentMap createConcurrentMap(@Singular Map values,
                                                                //Boolean immutable,
                                                                //Boolean threadSafe,
                                                                //Boolean concurrent,
                                                                //Boolean sorted,
                                                                //Boolean serializable,
                                                                //Boolean unmodifiable,
                                                                Consumer> consumer) {
        ConcurrentMap map=new ConcurrentHashMap<>();
        if (consumer!=null) {
            consumer.accept(map);
        }
        return map;
    }

    public static class ConcurrentMapBuilder {
        private final Map initial=new HashMap<>();

/*
        public ConcurrentMap build() {
            return new ConcurrentHashMap<>(initial);
        }
*/
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy