在Java中,有一种简单/方便的方法可以将N个项目的集合转换为N个集合,每个集合都有一个项目吗?我的意思是除了手动浏览集合中的每个项目并将其复制到新集合中。
答案 0 :(得分:2)
以下是使用Java 8中的一个语句执行此操作的方法。l1
是一些Collection<T>
,结果是List<ArrayList<T>>
,其中每个ArrayList<T>
包含该系列中的一个元素。
List<ArrayList<T>> l2 = l1.stream().map(x -> new ArrayList<>(Arrays.asList(x))).collect(Collectors.toList());
分解,这:
Stream
; ArrayList
; ArrayList
收集到List<ArrayList>
。答案 1 :(得分:0)
如果你愿意使用番石榴,你可以拥有Function&lt; E,列表&lt; E&gt;&gt;看起来像是:
public final class ItemToListFunction<E> implements Function<E, List<E>>
{
public List<E> apply(E input)
{
//if it does not need to be mutable
return Collections.singletonList(input);
//if it does need to be mutable
final List<E> list = new ArrayList<E>();
list.add(input);
return list;
}
}
然后,您可以使用Collections2,Lists或Iterables中的一种转换方法。 这种方法的优点是内部列表的创建被推迟到对元素进行实际迭代之前。