我環顧四周,但我似乎無法找到,它下面的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