我环顾四周,但我似乎无法找到,它下面的API调用:我需要合并所有的ArrayList在一个ArrayList,形成一个ArrayList的所有来自所有子阵列的元素,如果有意义的话。的Java的ArrayList:内的ArrayList合并的ArrayList创建一个ArrayList的
下面是一个例子:
{ “这”, “A”,{ “小”, “世界 ”之后“},{” 所有 “}}变为{” 这”, “一”, “小”,“世界”,“后”,“所有”}
我环顾四周,但我似乎无法找到,它下面的API调用:我需要合并所有的ArrayList在一个ArrayList,形成一个ArrayList的所有来自所有子阵列的元素,如果有意义的话。的Java的ArrayList:内的ArrayList合并的ArrayList创建一个ArrayList的
下面是一个例子:
{ “这”, “A”,{ “小”, “世界 ”之后“},{” 所有 “}}变为{” 这”, “一”, “小”,“世界”,“后”,“所有”}
public List<?> flatten(List<?> input) {
List<Object> result = new ArrayList<Object>();
for (Object o: input) {
if (o instanceof List<?>) {
result.addAll(flatten((List<?>) o));
} else {
result.add(o);
}
}
return result;
}
你可以举一个例子来说明如何正确地调用这个方法?我没有用过?与Java泛型之前,我很确定(尽管谷歌搜索)我还没有得到它的权利。 – 2013-01-22 01:03:38
@Nick:你可以在那里传递任何列表,但你回来了“未知”列表。这种方法不能承诺更多。如果您确信输入列表中的元素是T或列表
现在一切都很有意义,谢谢彼得! – 2013-01-22 20:49:51
要建立在Thilo's answer顶部,并避免再次实现自己的考虑Groovy的Collection.flatten()
听起来像功课递归。没有电话是为你做的,但是它的编码很简单。 – 2010-10-20 07:58:37