代码之家  ›  专栏  ›  技术社区  ›  Vicky

使用流映射到二维数组

  •  3
  • Vicky  · 技术社区  · 7 年前

    我试图创建一个二维数组 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, apple, pear]
    [[orange, orange], [apple, red], [pear, green]]
    

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

    1 回复  |  直到 7 年前
        1
  •  6
  •   Eran    7 年前

    你忘了从输入中获取值 Map 以下内容:

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

    输出:

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