【问题标题】:Best way to convert comma separated string to integer array将逗号分隔的字符串转换为整数数组的最佳方法
【发布时间】:2017-09-09 18:51:09
【问题描述】:

我有一个逗号分隔的字符串要转换为整数数组,我正在使用下面的方法来做到这一点,请建议是否有任何简单的方法来做到这一点。

Integer[] statusCodes = Arrays
        .stream(Arrays
                .stream(statusText.split(","))
                .map(String::trim)
                .mapToInt(Integer::valueOf)
                .toArray()
        )
        .boxed()
        .toArray(Integer[]::new);

【问题讨论】:

  • 甚至没有理由使用 mapToInt,因为它采用 valueOf() 返回的 Integer 并将其拆箱。只需使用 map(Integer::valueOf)

标签: java arrays string split integer


【解决方案1】:

您不需要外部流。 Integer.valueOf 的返回类型也已经是 Integer(它是 Integer.parseInt,它返回 int)所以你甚至不需要 boxed() 它。只需使用map 而不是mapToInt

Integer[] array = Arrays.stream(" 1,2, 3, 4".split(","))
        .map(String::trim)
        .map(Integer::valueOf)
        .toArray(Integer[]::new);

System.out.println(Arrays.toString(array));

输出:[1, 2, 3, 4]

【讨论】:

  • 感谢您提出更好的方法
  • @karayi 顺便说一句,如果您相信某些答案(不是我的必要)可以完全解决您的问题,您可以随时将其标记为解决方案。更多信息请访问"How does accepting an answer work?"
  • @Pshemo 但这仅适用于 api 24 以上,24 以下呢?
  • @RiddhiShankar Streams 件增加了编写代码的难度,但重写它以使用循环仍然很容易:String[] tmp = " 1,2, 3, 4".split(","); int[] result = new int[tmp.length]; for (int i = 0; i<tmp.length; i++){result[i] = Integer.parseInt(tmp[i]);}
【解决方案2】:

另一个版本如下:

Integer[] statusCodes = Stream.of(statusText.split(",")).map(Integer::valueOf).toArray(Integer[]::new);

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2010-09-20
    • 2021-12-18
    相关资源
    最近更新 更多