Без переопределения операторов вы должны конвертировать Iterable
в Set
вручную.
val Set<Integer> setA = #{1, 2, 3}
val Set<Integer> setB = (#{3, 4, 5} + setA).toSet
Если у вас есть изменяемый набор, есть еще один способ: оператор +=
, который является ярлыком для addAll
в любой коллекции.
val Set<Integer> setA = #{1, 2, 3}
val Set<Integer> setB = newHashSet(3, 4, 5)
setB += setA
Ни одно из решений не выглядит особенно хорошо, и вы, вероятно, хотите избежать изменчивости.
Как предлагается в другом ответе, метод Sets.union
в Гуаве может пригодиться, хотя я бы скорее импортировал его как статическое расширение, чем переопределение операторов. Тогда вы можете использовать:
val Set<Integer> setA = #{1, 2, 3}
val Set<Integer> setB = #{3, 4, 5}.union(setA)
Будьте осторожны, union
возвращает представление обоих наборов, которое может измениться, если базовые наборы являются изменяемыми.