我的hashmap中有一个名为“mastervalue”的对象值。 mastervalue包含ques_id作为键,数组包含得分和答案作为值。如何获取数组的值(得分和答案)并返回List。
String maprule = "department == '2' && topic == '1'";
mastervalue = (Map<String, List<String>>) map_master.get(maprule);
System.out.println(mastervalue);
mastervalue打印出来: {10359 = [4,1],10365 = [1,1],10364 = [1,1],10363 = [4,1],10362 = [3,1],10369 = [1,1],10368 = [5,1]}
答案 0 :(得分:15)
好:
public <T> List<T> getValues(Map<?, T> map) {
return new ArrayList<>(map.values());
}
内联:
List<List<String>> list = new ArrayList<>(map_master.values());
或使用方法:
List<List<String>> list = getValues(map_master);
或者,如果要将所有列表的所有值都放在一个中,只需迭代:
List<String> total = new ArrayList<>();
for (List<String> lis : map_master.values()) {
total.addAll(lis);
}
使用Java 8流:
List<String> total = map_master.values().stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
答案 1 :(得分:0)
对于Koltin用户,这是一种方法:
val listOfObjects = List<Object>?.stream()?.flatMap { obj: Collection<Object> -> obj.stream() }
?.collect(Collectors.toList())
通用方式:
fun <T: Any> listList(list: List<List<KClass<T>>>) = list.stream().flatMap { obj: Collection<*> -> obj.stream() }.collect(Collectors.toList())