【发布时间】:2021-02-27 13:41:22
【问题描述】:
如何最好地将包含ArrayList<String> 和String 对象的ArrayList<Object> 扁平化为扁平化ArrayList<String>?
示例
输入:[item1, item2, item3, [item4a, item4b, item4c]]
预期输出:[item1, item2, item3, item4a, item4b, item4c]
创建虚拟示例的代码:
ArrayList<Object> objectList = new ArrayList<Object>();
objectList.add("item1");
objectList.add("item2");
objectList.add("item3");
ArrayList<String> subList = new ArrayList<String>();
subList.add("item4a");
subList.add("item4b");
subList.add("item4c");
objectList.add(subList);
(不)工作解决方案
private ArrayList<String> flattenList(ArrayList<Object> objectList) {
ArrayList<String> flatLst = new ArrayList<String>();
for (Object item : objectList) {
if (item.getClass() == ArrayList.class) {
System.out.println(item);
for (Object s : item) {
flatLst.add(String.valueOf(s));
}
} else if (item.getClass() == String.class) {
flatLst.add(String.valueOf(item));
}
}
return flatLst;
}
这给出了以下错误。
| for (Object s : item) {
for-each not applicable to expression type
required: array or java.lang.Iterable
found: java.lang.Object
问题:如何解决这个问题?或者更好的是,有什么更清洁的方法来解决这个问题?
【问题讨论】:
标签: java list arraylist flatten