Это выглядело как забавный вызов кода.Я написал небольшой Java-класс, демонстрирующий, как вы можете использовать оператор instanceof для разделения этих значений на отдельные коллекции.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class Scratch {
public static void main(String[] args) {
// test data
List<Map<String, ?>> mixed = new ArrayList<>();
Map<String, String> strings = new HashMap<>();
strings.put("x", "y");
Map<String, List<String>> lists = new HashMap<>();
List<String> list = new ArrayList<>();
list.add("z");
lists.put("w", list);
mixed.add(strings);
mixed.add(lists);
// split out data
Map<String, String> onlyStrings = new HashMap<>();
Map<String, List<String>> onlyLists = new HashMap<>();
for (Map<String, ?> item : mixed) {
for (Map.Entry<String, ?> entry : item.entrySet()) {
Object value = entry.getValue();
if (value instanceof String) {
onlyStrings.put(entry.getKey(), (String)entry.getValue());
} else if (value instanceof List) {
onlyLists.put(entry.getKey(), (List<String>)entry.getValue());
}
}
}
// print out
System.out.println("---Strings---");
for (Map.Entry<String, String> entry : onlyStrings.entrySet()) {
System.out.println(entry);
}
System.out.println("---Lists---");
for (Map.Entry<String, List<String>> entry : onlyLists.entrySet()) {
System.out.println(entry);
}
}
}
Вывод
---Strings---
x=y
---Lists---
w=[z]
Надеюсь, это поможет вампосле