将新元素添加到Collection而不是转换它们?

时间:2013-03-29 17:09:18

标签: java collections guava

使用Guava,是否可以将新项目添加到仅转换集合的集合中?

想象一下,例如我有

Set<Integer> numbers = Sets.newHashSet(1,2,3);

现在,除了已经存在的数字之外,还应包括每个数字的两倍和三倍,因此2,4,6以及3,6,9。

Guava中有什么东西像

addToSet(numbers, <a function returning a List of values for each element in numbers>)

感谢任何提示!

3 个答案:

答案 0 :(得分:3)

为什么像Set.addAll(Collection c)这样的东西不够?

Set<Integer> numbers = Sets.newHashSet(1,2,3);
numbers.addAll(setReturningFunction());

答案 1 :(得分:1)

装饰Set(可以使用ForwardingSet),然后覆盖add方法,将其他项添加到支持委托中。

答案 2 :(得分:1)

transformAndConcat完成这项工作,允许返回多个元素,尽管只有一个元素被传递给转换函数。