使用流映射到二维数组 [英] Map to 2d array with Streams

查看:74
本文介绍了使用流映射到二维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Streams创建String的二维数组:

I am trying to create a 2d array of String using Streams:

String[] fruit1DArray;
String[][] fruit2DArray;

Map<String, String> fruitMap = new HashMap<>();
fruitMap.put("apple", "red");
fruitMap.put("pear", "green");
fruitMap.put("orange", "orange");

fruit1DArray = fruitMap.entrySet()
    .stream()
    .map(key -> key.getKey())
    .toArray(size -> new String[size]);

fruit2DArray = fruitMap.entrySet()
    .stream()
    .map(entry-> new String[]{entry.getKey()})
    .toArray(size -> new String[size][1]);

System.out.println(Arrays.deepToString(fruit1DArray));
System.out.println(Arrays.deepToString(fruit2DArray));

输出为:

[orange, apple, pear]
[[orange], [apple], [pear]]

我需要的输出是:

[orange, apple, pear]
[[orange, orange], [apple, red], [pear, green]]

我指的是 https://stackoverflow.com/a/47397601/887235

推荐答案

您忘记了从输入Map中获取值:

You forgot to grab the value from your input Map:

fruit2DArray = fruitMap.entrySet()
                       .stream()
                       .map(e -> new String[]{e.getKey(),e.getValue()})
                       .toArray(String[][]::new);

输出:

[[orange, orange], [apple, red], [pear, green]]

这篇关于使用流映射到二维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆