java - 在 Java 中将 String[] 的所有元素转换为 int[] 的 Mapreduce 方法?

标签 java lambda mapreduce string-conversion

您可以将 String 数组的所有元素转换为 int 并将它们存储在 int 数组中,如下所示:

public static final void main(String[] args) {
    String input = "1 2 5 17 23 12 5 72 123 74 13 19 32";
    String[] strAr = input.split(" ");

    int[] output = parseIntArray(strAr);
}

private static int[] parseIntArray(String[] strAr) {
    // convert to int[] one by one
    int[] output = new int[strAr.length];
    for (int i = 0; i < strAr.length; i++) {
        output[i] = Integer.parseInt(strAr[i]);
    }

    return output;
}

如何在 Java 中以 map-reduce 方式编写 parseIntArray(String[]) 方法?

我听说在 Java 8 中有一种使用 lambda 执行此操作的简单方法。在 Java 8 之前是否也有一种 map-reduce 时尚方法来执行此操作?我知道这是两个问题合二为一;但是我相信它们之间的关系如此密切,社区最好将这两个答案放在一页上。

最佳答案

一种写法是:

private static int[] parseIntArray(String[] strAr) {
  return Stream.of(strAr).mapToInt(Integer::parseInt).toArray();
}

你也可以直接从字符串开始:

private static final Pattern splitOnSpace = Pattern.compile(" ");

private static int[] parseIntArray(String str) {
  return splitOnSpace.splitAsStream(str).mapToInt(Integer::parseInt).toArray();
}

关于java - 在 Java 中将 String[] 的所有元素转换为 int[] 的 Mapreduce 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29606812/

相关文章:

带冒号和不带冒号的 Java 类路径 ":"

java - Android 表格单元格边框

java - 如何使用 Mockito 模拟方法调用

hadoop - 没有键值 TextInputFormat?

hadoop - 访问Hadoop Job History Server/jobhistory页面时出错

java - 如何在 Java 中正确使用 thread.sleep()?

java - LambdaConversionException 与泛型 : JVM bug?

java - 无法将 void 转换为 java.lang.Void

Java8 Stream 作为一个整体映射到一个 Function

Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos)——什么时候使用其中一个?