我正在努力寻找一种将数字的数字分成列表的有效方法。
例如,对于数字:
23464646237
和
ArrayList <Integer> vector;
我想在数组的每个位置插入一个数字,从而获得以下输出:
vector = {2,3,4,6,4,6,4,6,2,3,7}
我如何在Java中以干净有效的方式做到这一点?
提前致谢
答案 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)));
}