package com.intellij.codeInsight.dataflow; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.HashSet; import java.util.Set; /** * @author oleg */ public class SetUtil { private SetUtil() { } /** * Intersects two sets */ @NotNull public static <T> Set<T> intersect(@Nullable Set<T> set1, @Nullable Set<T> set2) { if (set1 == null && set2 == null) { return Collections.emptySet(); } if (set1 == null) { return set2; } if (set2 == null) { return set1; } if (set1.equals(set2)) { return set1; } Set<T> result = new HashSet<T>(); Set<T> minSet; Set<T> otherSet; if (set1.size() < set2.size()) { minSet = set1; otherSet = set2; } else { minSet = set2; otherSet = set1; } for (T s : minSet) { if (otherSet.contains(s)) { result.add(s); } } return result; } }