【问题标题】:How convert an int into an Array number by number如何按数字将 int 转换为 Array 数字
【发布时间】:2018-11-11 09:32:14
【问题描述】:

我有一个数字,例如“1256”,如何将其转换为数组?

实际上,我使用了一个类的构造函数来存放它。

public SecretBlock(int numbersToArray) {
    this.arrayOfNumbers = new int[AMOUNT];
    for (int i = AMOUNT - 1; i >= 0; i--) {
        this.arrayOfNumbers[i] = numbersToArray % 10;
        numbersToArray /= 10;
    }
}

是否有任何可以使用 Java 8 Stream 的好/足够的解决方案?

【问题讨论】:

  • 什么是AMOUNT?另外,如果您有1256,该数组的外观如何? [1、2、5、6]?
  • 您可以将 int 转换为字符串,遍历它并将其转换回 int。

标签: java arrays lambda java-8 java-stream


【解决方案1】:

您当前的解决方案可能是最简洁的,但是如果您真的想使用Java8,您可以使用以下sn-p:

int[] array = Arrays.stream(String.valueOf(numbersToArray).split(""))
    .mapToInt(Integer::parseInt)
    .toArray();

【讨论】:

  • 或者根本没有Pattern...来自Character#getNumericValue
【解决方案2】:

使用 java-8 可以做到:

Pattern.compile("")
       .splitAsStream(String.valueOf(numbersToArray))
       .mapToInt(Integer::parseInt)
       .toArray();

【讨论】:

  • Pattern。我总是忘记那个。这是一个非常干净的解决方案:) +1
【解决方案3】:
 int[] result = String.valueOf(numbersToArray)
            .chars()
            .map(Character::getNumericValue)
            .toArray();

【讨论】:

  • .codePoints() .map(Character::getNumericValue)
  • @Aominè Si Senior
  • .map(i -> i - '0')
  • 我想你的意思是写.mapToInt(...)而不是.map(...)
  • @ValentinRuano chars 返回什么?
猜你喜欢
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多