在 Java 中拆分数字的有效方法

Efficient way to split a number in Java

我正在努力寻找一种有效的方法来将数字的数字拆分到列表中。

例如,对于号码:

23464646237

ArrayList <Integer> vector;

我想在数组的每个位置插入数字中的一个数字,因此获得以下输出:

vector = {2,3,4,6,4,6,4,6,2,3,7}

如何在 Java 中以干净高效的方式执行此操作?

提前致谢

试试这个:

long yourNumber = 23464646237L;
ArrayList<Integer> vector = new ArrayList<Integer>();
String numStr = String.valueOf(yourNumber);
for(int i=0;i<numStr.length();i++)
{
    vector.add(Integer.valueOf(numStr.charAt(i)));
}

不需要parseInt

for(int i = 0; i < numberAsString.length(); i++)
    vector.add((int)numberAsString.charAt(i) - 48);

这将检索该位置数字的ASCII值,然后减去48,即table中0的值。

从 -127 到 127 的数字被缓存,所以我相信这将是最有效的方法(请注意,我不是 100% 确定)。但是无论如何,只尝试提供一种方法来保存 parseInt 调用,因为您要求 有效。

首先不要将其转换为字符串。因为它会更快地处理数值。所以你可以使用:

long nr = 23464646237;
while (nr > 0)
{
    vector.add(nr % 10);
    nr /= 10;
}

你可以这样做:

List<Integer> vector = Arrays.asList(String.valueOf(number).split(""))
            .stream()
            .map(Integer::parseInt)
            .collect(Collectors.toList());

只需将您的号码设为字符串,然后使用 charAt() 方法将字符串的每个字符添加到列表中。

public static ArrayList<Object>vect=new ArrayList<Object>();


public static void main(String[] args){
    String y="123321312312";
    for (int i=0;i<y.length();i++){
        vect.add(y.charAt(i));
    }
}