加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用Streams映射到2d数组

发布时间:2020-12-15 08:26:32 所属栏目:Java 来源:网络整理
导读:我正在尝试使用Streams创建一个2d的String数组: String[] fruit1DArray;String[][] fruit2DArray;MapString,String fruitMap = new HashMap();fruitMap.put("apple","red");fruitMap.put("pear","green");fruitMap.put("orange","orange");fruit1DArray = f
我正在尝试使用Streams创建一个2d的String数组:

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,pear]
[[orange,orange],[apple,red],[pear,green]]

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

解决方法

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

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

输出:

[[orange,green]]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读