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

时间:2015-03-20 23:36:24

标签: java arraylist integer

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

例如,对于数字:

23464646237

ArrayList <Integer> vector;

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

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

我如何在Java中以干净有效的方式做到这一点?

提前致谢

5 个答案:

答案 0 :(得分:2)

不需要parseInt

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

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

你可以这样做:

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

答案 3 :(得分:2)

只需将您的数字设为字符串,并使用charAt()方法将字符串的每个字符串添加到List中。

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));
    }
}

答案 4 :(得分:1)

试试这个:

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)));
}