我有一个关于在包含复杂对象的集合上循环的一般性问题。
我有一个 Collection<Object>
,其中包含 Array<E>
的 LinkedHashMap<K,V>
我试图从中提取价值。
我试过各种各样的循环来获得键,值对,但是没有运气,比如;
物体看起来像;
Collection<Object> dsidsToExclude = Arrays.asList(param.get("idsToExclude"));
for(Object id : dsidsToExclude) {
if(id instanceof ArrayList) {
// Loop over the list of <K,V>
for(Object kv : id) {
// I want to get extract the kv pairs here..
}
}
}
我想知道什么是最有效的方法,有什么建议吗?谢谢。
2条答案
按热度按时间b4qexyjb1#
Arrays.asList(something)
将生成包含一个元素的列表。你不需要这么做。您可以检查对象并强制转换为列表。
列表中的每一项都需要检查和转换。
您可以从Map项中获取键和值。
完整示例:
e3bfsja22#
只要输入集合的内容可以指定为
Collection<List<Map<K, V>>>
(注意接口的使用)List
以及Map
而不是实现ArrayList
以及LinkedHashMap
),则更适合实现类型为的泛型方法K, V
摆脱instanceof
和显式铸造:同样,方法
forEach
可用于集合、列表和Map:此外,还可以使用流api,特别是
flatMap
访问所有最里面Map的内容。或者,null
值可以按如下所示进行过滤