如何从map对象获取List值

时间:2014-06-17 04:53:47

标签: java list hashmap

我的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]}

2 个答案:

答案 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())