【问题标题】:Java map an array of Strings to an array of IntegersJava 将字符串数组映射到整数数组
【发布时间】:2017-05-10 18:08:15
【问题描述】:

我在 SO 上找到了这段代码,用于将字符串映射到整数

Arrays.stream(myarray).mapToInt(Integer::parseInt).toArray();

但是如何使它映射到整数类型而不是原始 int?

我尝试从Integer.parseInt 切换到Integer.valueOf,但似乎mapToInt() 方法强制使用原始类型。

我有一个整数数组的 ArrayList,所以我不能使用原始整数。

【问题讨论】:

  • Integer 类实际上与 int 相同。它为您包装和打开 int,因此,假设它们是相同的
  • 是的,但是当我尝试将映射的数组附加到我的整数数组列表中。
  • This question 似乎与您的疑问有关。

标签: java java-8 integer java-stream


【解决方案1】:

由于StringInteger 都是引用类型,您可以简单地调用Stream::map 来转换您的数组。

Integer[] boxed = Stream.of(myarray).map(Integer::valueOf).toArray(Integer[]::new);

【讨论】:

    【解决方案2】:

    您可以使用Stream<Integer> boxed() 方法。

    Stream<Integer> boxed() 返回一个由以下元素组成的 Stream 这个流,每个装箱为一个整数。

    ArrayList<Integer[]> resultSet = new ArrayList<>();
    resultSet.add(Arrays.stream(myarray).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new));
    

    【讨论】:

    • 非常感谢。不过,有没有办法更优雅地做到这一点?例如在 JavaScript myarray.map(function(e) {return parseInt(e);});?对于简单的 String[] 到 Integer[] 转换,似乎有很多嵌套调用和中间类型。
    • 你可以用map 代替boxing 和mapInt: String [] myArray = {"1", "2", "3", "4"}; Integer[] integerList =Arrays.stream(myArray).map(Integer::valueOf).toArray(Integer[]::new); System.out.print(integerList[0].getClass()); //output: class java.lang.Integer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 2012-01-23
    • 2021-11-15
    • 2017-01-31
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    相关资源
    最近更新 更多