From 7caf3d717451ea9a98b19ab58e175281b5029055 Mon Sep 17 00:00:00 2001 From: Illia Date: Mon, 26 Oct 2020 18:15:39 +0200 Subject: [PATCH] Add LazyCollections.lazyAdd for Sets This will be used for GenerateType field, which is set of specified getters. JIRA: MDSAL-426 Change-Id: I691aa13c88147828890e0639441f607515053af8 Signed-off-by: Illia --- .../yangtools/util/LazyCollections.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/common/util/src/main/java/org/opendaylight/yangtools/util/LazyCollections.java b/common/util/src/main/java/org/opendaylight/yangtools/util/LazyCollections.java index ae502d1a3f..109e984c94 100644 --- a/common/util/src/main/java/org/opendaylight/yangtools/util/LazyCollections.java +++ b/common/util/src/main/java/org/opendaylight/yangtools/util/LazyCollections.java @@ -9,7 +9,9 @@ package org.opendaylight.yangtools.util; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Utility methods for lazily instantiated collections. These are useful for situations when we start off with an empty @@ -45,4 +47,30 @@ public final class LazyCollections { ret.add(obj); return ret; } + + /** + * Add an element to a set, potentially transforming the set. + * + * @param the type of elements in the set + * @param set Current set + * @param obj Object that needs to be added + * @return new set + */ + public static Set lazyAdd(final Set set, final E obj) { + final Set ret; + + switch (set.size()) { + case 0: + return Collections.singleton(obj); + case 1: + ret = new HashSet<>(4); + ret.addAll(set); + break; + default: + ret = set; + } + + ret.add(obj); + return ret; + } } -- 2.36.6